目录
一、固件库模板
二、准备资料
- 固件库模板
- MDK5开发环境
- 定时器协议
- 利用固件库模板点灯工程
实验程序已经发布到百度网盘,本文末有链接可以自取
中断查看这篇博客STM32中断应用概括
三、 SYSTick简介
SysTick-系统定时器是属于CM3的一个外设,内嵌在NVIC中,系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,我们一般设置SYSCLK的值为72M。当重装载数值寄存器的值递减到0,系统定时器就产生一次中断,
1. SysTick寄存器介绍
SysTick-系统定时器有4个寄存器,只需要配置前三个寄存器,最后一个是校准寄存器不需要使用。
寄存器名称 | 寄存器描述 |
---|---|
CTRL | SysTick控制及状态寄存器 |
LOAD | SysTick重装载数值寄存器 |
VAl | SysTick当前数值寄存器 |
CALIB | SysTick校准数值寄存器 |
四、 SysTick定时实验
利用SysTick产生一秒的延时,LED以1s的频率闪烁
1.硬件设计
stm32f103c8t6自带PC13的LED
2.软件设计
-
设置重装载寄存器的值
-
清除当前数值寄存器的值
-
配置控制及状态寄存器
2.1 复制工程 (复制点亮LED工程)
2.2 新建SysTick文件(打开工程)
2.3 导入.c文件,绑定路径
SysTick 配置库函数
// 这个 固件库函数 在 core_cm3.h 中
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
// reload 寄存器为 24bit,最大值为 2^24
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1);
// 配置 reload 寄存器的初始值
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;
// 配置中断优先级为 1<<4 -1 = 15,优先级为最低
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
// 配置 counter 计数器的值
SysTick->VAL = 0;
// 配置 systick 的时钟为