5。STM32裸机开发(2)

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

嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。

(2)中还是IO的一些基本操作和扩展,包括系统定时器、蜂鸣器、数码管、按键

一 SysTick系统定时器

        SysTick系统定时器是ARM Cortex-M微控制器中的一个定时器,可以用于实现一些基本的计时和调度功能。它可以作为系统时钟的一个计数器,以固定的时间间隔来触发中断,从而实现一些定时任务的调度,例如周期性的数据采集、任务轮询等。作为一个 24 位向下递减的定时器,每计数一次所需时间为 1/SYSTICK,SYSTICK为系统定时器时钟

SysTick系统定时器的主要功能包括:

  1. 提供了一个硬件定时器,可以以固定的时间间隔触发中断,从而实现一些定时操作;
  2. 可以作为系统时钟的计数器,方便进行一些时间相关的操作和计算;
  3. 可以与其他外设如串口、定时器等配合使用,实现更复杂的系统控制功能;
  4. 可以用于软件延时或者忙等待的实现,避免在一些特定场景下使用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:标志位,表示当
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值