STM32用SysTick来做定时器
来源:互联网 发布:js 中文编码 编辑:程序博客网 时间:2024/04/28 15:41
1 硬件电路配置
这里还是借用前面LED电路我就不贴图片。
2 时钟说明
SysTick和HCK的时钟频率是一样的库函数代码如下
/** * @brief Initialize and start the SysTick counter and its interrupt. * * @param ticks number of ticks between two interrupts * @return 1 = failed, 0 = successful * * Initialise the system tick timer and its interrupt and start the * system tick timer / counter in free running mode to generate * periodical interrupts. */static __INLINE uint32_t SysTick_Config(uint32_t ticks){ if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ SysTick->VAL = 0; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0); /* Function successful */}
由库函数可知道没有进行分频动作所以时钟和主时钟一样
配置时钟中断的时间间隔
<pre name="code" class="cpp">void SysTick_Init(void){/* SystemFrequency / 1000 1ms中断一次 * SystemFrequency / 100000 10us中断一次 * SystemFrequency / 1000000 1us中断一次 *///if (SysTick_Config(SystemFrequency / 100000))// ST3.0.0库版本if (SysTick_Config(SystemCoreClock / 1000))// ST3.5.0库版本{ /* Capture error */ while (1);}// 我需要不断的开启中断所以这句话屏蔽起来 //SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;}
用中断模式所以需要在中断文件中做定时标志。一下这个函数在中断文件中
<pre name="code" class="cpp">/** * @brief This function handles SysTick Handler. * @param None * @retval : None */void SysTick_Handler(void){TimingDelay_Decrement();}
中断函数在调用一个计数函数,计数函数应该放在外面一个公共文件中方便各个文件中数据传递。
/* * 函数名 :TimingDelay_Decrement * 描述 获取节拍程序 * 输入 无 * 输出 无 * 调用 在 SysTick 中断函数 SysTick_Handler()调用 */ void TimingDelay_Decrement(void){if (TimingDelay != 0x00){ TimingDelay--;}}
0 0
- STM32用SysTick来做定时器
- STM32 SysTick定时器做延时函数
- Stm32 Systick定时器
- STM32中的SysTick定时器
- STM32 SysTick定时器
- stm32的Systick定时器
- STM32 Systick定时器
- stm32之SysTick定时器
- STM32的Systick定时器
- STM32 SysTick定时器
- STM32-Systick定时器
- STM32系统定时器SysTick
- STM32之SysTick定时器
- stm32 SysTick系统定时器
- STM32系统定时器SysTick
- STM32学习笔记——使用SysTick定时器做延时
- STM32之用SysTick做准确定时
- STM32之用SysTick做准确定时
- Windows内核中的读写锁
- matlab时间加5分钟
- HT349IntersectionOfTwoArray
- 无底色 无背景 logo 图标
- how to remove 1px line at UINavigationBar
- STM32用SysTick来做定时器
- BinarySearch小总结
- openjudge 水题 方块转换
- openjudge水题 翻转诗句
- Task Scheduler I & II
- mybatis-XMLMapperEntityResolver 找对应的dtd文件
- 莫等闲,白了少年头,空悲切
- 【非常高%】【codeforces 733B】Parade
- 【25.47%】【codeforces 733D】Kostya the Sculptor