完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define Work_LedToggle() (PA_ODR ^= (1 << 6)) //取反 void SysClock_Init(void) { CLK_ICKCR |= 0x01; //开启内部HSI while(!(CLK_ICKCR&0x02)); //HSI准备就绪读取CLK_ICKCR第一位 CLK_SWR = 0x01; //HSI为主时钟源 CLK_CKDIVR &=~0X03; //16分频 CLK_ICKCR |=(1 << 2); //open LSI clock } void Delay_Init(void) { CLK_PCKENR1 |= (1 << 2); //open peripheral clock 打开定时器4 tiM4_CR1 |= (1 << 7); //enable preload TIM4_PSCR = (1 << 2) | (1 << 0); //prescaler = 32 TIM4_ARR = 250; //1MS TIM4_SR1 &=~(1 << 0); //clear updata interrupt flag } void Delay_ms(u16 ms) { TIM4_CR1 |= (1 << 0); //open TIM4 while(ms--) { Feed_Dog(); while((TIM4_SR1 & (1 << 0)) == 0); TIM4_SR1 &=~(1 << 0); } TIM4_CR1 &=~(1 << 0); //close TIM4 } void main() { SysClock_Init(); Delay_Init(); while(1) { Work_LedToggle(); Delay_ms(1); } } 请问一下,这里单片机用HSI内部16MHz的时钟,系统时钟通过16分频后系统时钟为1M TIM4定时为1Ms,为什么这里的初始值是250 看数据手册计算公式应该是:TIM4_ARR = 定时的时间(秒)* 主时钟的频率 / 预分频的系数 按照这样的公式TIM4_ARR = 32,为什么这里是250呢? |
|
相关推荐
|
|
140 浏览 0 评论
133 浏览 0 评论
STM32CUBEMX(12)--IIC,12864OLED(0.96寸)移植
511 浏览 0 评论
STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
527 浏览 0 评论
stm32f407vet6+LAN8720A调试以太网遇到软件复位失败问题
916 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-13 22:15 , Processed in 0.774189 second(s), Total 73, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号