历史上的今天
今天是:2025年01月02日(星期四)
2019年01月02日 | 关于STM32通用定时器更新事件中断
2019-01-02 来源:eefocus
//定时器3中断服务程序
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001) //产生更新事件
{
LED1=!LED1;
LED0=!LED0;
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
//通用定时器中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void Timerx_Init(u16 arr,u16 psc)
{
TIM3->SMCR&=0xfffffff8; //从模式控制寄存器设置预分频时钟由内部时钟提供
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频器7200,得到10Khz的计数时钟,//CK_CNT=Fck_psc/([15:0]+1)
TIM3->CR1|=1<<4; //计数器向下计数
TIM3->CR1|=1<<7; //每一次更新事件(UEV)时,才把预装在寄存器的内容送到影子寄存器
TIM3->CR1&=0xfffffffd; //设置UDIS允许更新事件(UEV)
TIM3->CR1&=0xfffffffb; //设置更新请求源
TIM3->CR1|=0x01; //使能计数器
TIM3->DIER|=1<<0; //允许更新中断
MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2
}
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置72MHZ
delay_init(72); //延时初始化
uart_init(72,9600); //串口初始化
LED_Init(); //初始化与LED连接的硬件接口
Timerx_Init(5000,7199);//10Khz的计数频率,计数到5000为500ms
while(1)
{
delay_ms(200);
TIM3->EGR|=0x0001;
}
}
这样设置以后,个人做了测试,可以在计数器在计数到2000时,设置了TIM3->EGR|=0x0001;更新事件发生,并产生了更新事件中断,同时,对计数器重新初始化
史海拾趣
|
IAB认为,就目前的情况看,简单网络管理协议SNMP变得非常流行,它已经变成了对基于IP网络的管理数据进行报告的工业标准。在这里,我们重点介绍SNMP在数据网络监控中的两个应用:实时监测网络时延、实时绘制ATM/FR电路流量和电路告警。 一、SNMP网 ...… 查看全部问答> |
|
服务器怎么向手机wince mobile发送MSMQ消息呢? 智能手机WINCE mobile与服务器SERVER通过GPRS移动网络连接,数据交换用什么方法比较省事?MSMQ?TCP/IP?或其它? 如果使用MSMQ,SERVER怎么向手机wince mobile发送消息呢?手机上的消息队列名该如何确定?… 查看全部问答> |
|
网盘免费下载:www.hishop.ys168.com 注册机试用版登(DEMO用户)陆密码:fe01ce2a7fbac8fafaed7c982a04e229 试用版,只允许试用一天,一天过后,自动过期! 正式版没有任何限制!支持Hishop5.2.1证书破解,附DLL文件破解!购买请联系:QQ:5243121 ...… 查看全部问答> |
|
使用VC开发时,常常需要在窗口上画一些图表。有时要把一些文字竖着写,有时需要倾斜一定的角度。对于老手们,这当然算不上什么问题,而新手却常常找不到方法。 新手们往往会在CDC的成员函数里四处寻 ...… 查看全部问答> |
|
1.例程序中的U盘程序无法正常工作,在Debugger连接后就出现了一个移动硬盘(疑为STM32的flash)。但运行MassstorageSimpleBuffer程序后在设备管理器里有一个出错的USB Device。2.运行LCD demo正常,理论上说在进入debug后IAR已经将 ...… 查看全部问答> |
|
嵌入式平台选择:树莓派 or BeagleBone Black(BBB) 本文由 极客范 - 小道空空 翻译自 Michael Leonard。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。 已经有很多文章比较过Arduino、树莓派和BeagleBone Black(BBB),但本文的侧重点不同。我相信大家都会认为Arduino ...… 查看全部问答> |
|
我的程序,x=x+1; //x是一个float看反汇编代码:008037 E2AF MOV32 R0H, *-SP[2], UNCF 008039 E88F ADDF32 R0H, #0x3f80, R0H 00 ...… 查看全部问答> |




