完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.TIMx的外设时钟使能
RCC-》APB1ENR |= 1 《《 n; 2.设定ARR寄存器(计时器自动重装值) TIMx-》ARR = arr; 3.设定预分频器的值 在设定预分频器的值之前,先理解这里的预分频器与时钟系统里的APB1外设的PPRE1不同(由于原子的SYSTEM中时钟初始化函数将PPRE1设为非1,所以外设定时器的时钟就应该加倍了),也就是说进入下面这张图的内部时钟(CK_INT)为72MHZ,而PSC预分频器改变的是时基单元的那个,看到了吗? 代码格式: TIMx-》PSC = psc; 4.允许更新中断 TIMx-》DIER |= 1《《 0; 5.开定时器使能 TIMx-》CR1 |= 1 《《 0; 6.设置中断分组及优先级 在这里就用原子提供的MY_NVIC_Init();函数 (具体代码看《设置中断流程》) (注:其实还应该有一个设置定时器是向哪个方向计数:但默认的是边沿对齐向上计数模式;如果要改变计数方向看下图进行相关寄存器(CR1)的修改就可以了) 写中断服务函数 (注:每次进入中断的最后要清除SR的0位 TIMx-》SR &= ~(0x01 《《 0)) 如何计算装入ARR与PSC的值(在这里采用溯回法讲解) PSC.:如果要将72MHZ分频7200,则为6199 ARR:这个寄存器中存放的是产生中断间隔的总计时点数,也就是说,当CNT寄存器中每次从0到arr将产生中断(默认向上计数模式),那么变化一次的时间就显得关键了。那么如何计算变化一次数的时间呢?这要配合PSC寄存器来说了。 我们知道,经过PSC分频的频率指的是变化一次所需时间周期的倒数。前面说过,经过原子的时钟初始化使得APB1定时器时钟为72MHZ,而PSC就是分频的72MHZ。举例来说,假如你想要一次产生0.5s的中断,那PSC就设置7200 - 1 = 6199 ARR设置5000 - 1 = 4999,前者设置分频为10kHZ,CNT改变一次0.0001s,后者设置计数总点为5000 中断时间为5000 * 0.0001 = 0.5s (至于那个为什么-1 可以这样理解,每次溢出(在向上计数模式中),即归0,都要经过arr + 1个间隔,关于PSC,看一段话: 其实读者自行画一个图就好理解了,在这也就不赘述了)。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
725浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
591浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
549浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 22:13 , Processed in 0.798351 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号