STM32常见应用分析 arm 单片机 时钟 入门 深入
应 用SysTick 举 例
初始化相关模块:
SysTick_SetReload(9000); SysTick_ITConfig(ENABLE);
// 设定SysTick达到1ms计数结束 // 使能SysTick中断
中断处理:
void SysTickHandler (void) {
if (TimingDelay != 0x00) TimingDelay--; }
全局变量TimingDelay
必须定义为volatile
延时代码:
void Delay(u32 nTime) {
SysTick_CounterCmd(SysTick_Counter_Enable); TimingDelay = nTime;
while(TimingDelay != 0);
SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
条件:外部晶振为8MHz,系统时钟为 72MHz,SysTick的频率9MHz, SysTick产生1ms的中断。
// 使能SysTick计数器 // 读取延时时间
// 判断延时是否结束 // 关闭SysTick计数器 // 清除SysTick计数器
应用代码:
Delay(300);
// 延时 300ms
7