STM32_SysTick
来源:互联网 发布:软件开发设计方案 编辑:程序博客网 时间:2024/06/18 05:47
初始化滴答定时器
void SysTick_Init(void){ /* SystemFrequency / 1000 1ms中断一次 * SystemFrequency / 1000000 1us中断一次 */// if (SysTick_Config(SystemFrequency / 1000000)){ // ST3.0.0库版本 if (SysTick_Config(SystemCoreClock / 1000000)){ // ST3.5.0库版本 while (1); /*返回1说明装载的值超过 SysTick_LOAD_RELOAD_Msk 而出错进入这里的死循环, 这里的这个最大值是 0xFFFFFFul = 2^24 = 16777216 */ } //关闭滴答定时器,使用时再开启 SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;}
- 下面是用到的宏定义。
#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask *//* SysTick Reload Register Definitions */#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
延时程序
定义静态全局变量和延时函数
static __IO u32 TimingDelay;void Delay_us(__IO u32 nTime){ TimingDelay = nTime; //使能滴答定时器 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; while(TimingDelay != 0);}
SysTick中断函数SysTick_Handler()
//在stm32f10x_it.c中#include "bsp_systick.h" //包含要用到的头文件void SysTick_Handler(void) //修改SysTick_Handler()函数{ TimingDelay_Decrement(); //这里添加了一句函数调用}
SysTick中断函数调用的函数
void TimingDelay_Decrement(void){ if (TimingDelay != 0x00){ TimingDelay--; //每次SysTick中断就自减1,直到为0 }}
使用宏定义写出不同单位的延时函数
#define Delay_ms(x) Delay_us(1000*x) //单位ms#define Delay_s(x) Delay_us(1000000*x) //单位s
0 0
- stm32_systick
- STM32_SysTick
- STM32_systick定时器解述
- Android开发之殇
- Andorid 自定义ProgressBar控件
- OnTouchListener的使用
- Sumsets
- 通俗易懂的机器学习
- STM32_SysTick
- 浦东街镇医保卡制卡网点地址电话
- Jquery autocomplete插件的使用示例
- mysql max函数不能用在where条件中的案例
- scikit-learn学习之K最近邻算法(KNN)
- ACM2-1014
- zoj-5707题 Very Happy Great BG (签到题)The 13th Zhejiang Provincial Collegiate Programming Contest
- IOS设计模式之观察者模式
- intellj idea 如何设置类头注释和方法注释