嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。
(2)中还是IO的一些基本操作和扩展,包括系统定时器、蜂鸣器、数码管、按键
一 SysTick系统定时器
SysTick系统定时器是ARM Cortex-M微控制器中的一个定时器,可以用于实现一些基本的计时和调度功能。它可以作为系统时钟的一个计数器,以固定的时间间隔来触发中断,从而实现一些定时任务的调度,例如周期性的数据采集、任务轮询等。作为一个 24 位向下递减的定时器,每计数一次所需时间为 1/SYSTICK,SYSTICK为系统定时器时钟
SysTick系统定时器的主要功能包括:
- 提供了一个硬件定时器,可以以固定的时间间隔触发中断,从而实现一些定时操作;
- 可以作为系统时钟的计数器,方便进行一些时间相关的操作和计算;
- 可以与其他外设如串口、定时器等配合使用,实现更复杂的系统控制功能;
- 可以用于软件延时或者忙等待的实现,避免在一些特定场景下使用while循环等方式造成CPU浪费等问题。
总之,SysTick系统定时器可以作为一个非常方便的系统时钟计数器和定时器,为嵌入式系统的各种应用提供了基础的时间和定时相关功能。
注意:STM32F1的库函数中,没有提供SysTick定时器配置函数,因此需要我们根据芯片寄存器进行撰写。SysTick 定时器寄存器分别是 CTRL、LOAD、VAL、CALIB。此处需要查看Cortex M3手册(以下摘自文档内容)

CTRL寄存器注:CLKSOUTCE 位是用于选择 SysTick 定时器时钟来源,如果该位为 1,表示其时钟是由系统时钟直接提供即 72M。如果为 0,表示其时钟是由系统时钟八分频后提供即 72/8=9M

LOAD寄存器
因为 STM32F1 的 SysTick 定时器是一个 24 位递减计数器,因此重装载寄存器中只使用到了低 24 位,即 bit0-bit23。当系统复位时,其值为 0。
VAL寄存器
同样只有 bit0-bit23 有效,复位时值为 0。

CALIB 寄存器
CALIB寄存器是SysTick系统定时器中的一个寄存器,用于存储SysTick定时器的校准值。该寄存器是一个只读寄存器,长度为32位,包含了3个字段:
- TENMS:表示每个时钟滴答所对应的时间,单位为微秒;
- SKEW:标志位,表示当

文章介绍了嵌入式软件开发中的SysTick系统定时器的原理和配置,以及如何利用它实现微秒和毫秒级别的延时函数。同时,讲解了蜂鸣器和数码管的基本操作,以及按键控制的初始化和检测方法。内容涵盖STM32F1的库函数使用和寄存器配置,适合初学者掌握裸机开发的基础知识。
最低0.47元/天 解锁文章
1471

被折叠的 条评论
为什么被折叠?



