完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
SysTick定时器基础知识
SysTick定时器是一个简单的定时器,CM3和CM4内核芯片都有SysTick定时器。 SysTick定时器是一个24位的倒计数定时器,计到0时,将从RELOAD寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。 SysTick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。 相关寄存器库函数 四个寄存器 SysTick控制和状态寄存器——CTRL SysTick自动重装载除值寄存器——LOAD SysTick当前值寄存器——VAL SysTick校准值寄存器(使用较少) 固件库中的SysTick相关函数 SysTick_CLKSourceConfig(); //SysTick时钟源选择 SysTick_Config(uint32_t ticks); //初始化SysTick中断 Systick中断服务函数 void SysTick_Handler(void); 用Systick实现delay延时函数(正点原子) 不支持OS static u8 fac_us=0; //us延时倍乘数 static u16 fac_ms=0; //ms延时倍乘数,在ucos下,代表每个节拍的ms数 void delay_init() { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //选择外部时钟 HCLK/8 fac_us=SystemCoreClock/8000000; //为系统时钟的1/8 fac_ms=(u16)fac_us*1000; //非OS下,代表每个ms需要的systick时钟数 } //nus为要延时的us数。 void delay_us(u32 nus) { u32 temp; SysTick-》LOAD=nus*fac_us; //时间加载 SysTick-》VAL=0x00; //清空计数器 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick-》CTRL; }while((temp&0x01)&&!(temp&(1《《16))); //等待时间到达 SysTick-》CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick-》VAL =0X00; //清空计数器 } //延时nms //注意nms的范围 //SysTick-》LOAD为24位寄存器,所以,最大延时为: //nms《=0xffffff*8*1000/SYSCLK //SYSCLK单位为Hz,nms单位为ms //对72M条件下,nms《=1864 void delay_ms(u16 nms) { u32 temp; SysTick-》LOAD=(u32)nms*fac_ms; //时间加载(SysTick-》LOAD为24bit) SysTick-》VAL =0x00; //清空计数器 SysTick-》CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数 do { temp=SysTick-》CTRL; }while((temp&0x01)&&!(temp&(1《《16))); //等待时间到达 SysTick-》CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器 SysTick-》VAL =0X00; //清空计数器 } 虽然stm32中有通用定时器,但是在使用延时函数时,可以使用SysTick定时器节省资源。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1754 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1667 浏览 2 评论
1931浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
718浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
562浏览 3评论
587浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
546浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 17:26 , Processed in 0.927329 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号