天天PLAN

第一节

LED的注意事项

  1. 需要连接电阻,不然可能击穿LED。
  2. 一般LED所需电流为0~10+的毫安【不要超过20mA】,芯片所提供电压为3.3 or 5v,所以接一个1kΩ电阻【限流电阻】即可。
  3. 高电平、低电平。低电平时电路的阻抗低,噪声造成的电平变化小,也就是说,抗干扰能力更强

第二节

GPIO的注意事项

  1. 除了GPIO的为通用, 其余皆为复用

端口配置
2. GPIO大部分使用推挽输出,ⅡC使用的开漏输出。
3. 地址=基址+偏移地址
4. 端口配置寄存器【输入输出配置(模拟、浮空、上拉下拉、保留)(通用推挽、通用开漏、复用推挽、复用开漏),输入输出模式以及频率】–>端口输出数据寄存器(配置端口地址为1的是输出端口)

第四节

  1. AHB 高速总线、APB普通外设总结、
  2. 通过APB为GPIO提供RCC时钟源,才可以使外设与CPU连接。

使能GPIO

  1. volatile 避免从缓冲区取值,只能从寄存器中取值。

第七节

  1. 使用结构体可以定义连续的的相关配置,因为结构体中遍历在内存中是连续的。
  2. 使用STM32官方库需要引入相关文件。

依赖文件

依赖文件

库文件

第八节 按键控制

低电平输入

  1. 利用按键进行控制led时,可以利用内部的上拉电位,以此输入高电平,按键后输入低电平,以此控制LED

第九节呼吸灯

  1. 有两种方式,一种是通过修改平均电平,第二种是通过修改PWM

修改电平,变亮就是增加高电平所占时间

第十一节NVIC

抢占优先级和响应优先级

  1. 从优先级(响应优先级),在抢占优先级相同时谁的高谁优先。

外部中断模式
2. 事件请求:当前事件完成后跳转到中断向量表。中断请求:立刻跳转到中断向量表。

功能复用
3. 需要考虑到pin复用。时钟和中断。

外部中断初始化
4. 外部中断EXTI0的配置包括:向量化中断控制器的配置、PA0配置为外部中断、中断工作模式(下降沿检测)

第十三节SysTick 最后一个异常

  1. SysTick是系统内部计时器,CorTex-M3内包含。其是一个24位的计时器,基本模式是从一个reload 值递减,为0时触发异常,然后重新计数。

SysTick CTRL

  1. 多久减一可以通过CLKSOURCE来设置,AHB为告诉外部时钟,为72MHZ。频率=1/时钟,所以时钟越大,精度越高。

时钟为72MHZ,reload value为72,最后1微妙产生一次异常中断
3. 产生一次异常时间的设置。

第十四节

时钟配置

开启时钟,设置全局变量,使其在异常函数中进行递减
SysTick异常函数

  1. 延时函数

第十五节

  1. stm32 有两个看门狗,一个独立看门狗,一个窗口看门狗

IWDG
IWDG主要功能
2. 独立看门狗(IWDG)依赖LSI(低速内部时钟),即使晶振,外部时钟不工作,IWDG依旧正常工作

依赖APB1的外设
WWDG

IWDG框图

键寄存器
reload value为625,pr预分频因子为4时,IWDG就会每隔一秒钟复位一次
3. WWDG依赖APB1,所以APB1出问题,无法工作。

设置IWDG,第一步取消写保护,设置PR

第一步
第二步PR的设置

第三步reload value
第四步装入reload value

第五步使能

IWDG_initt code
5. 4. IWDG的设置

第16节课WWDG

  1. 偶尔的两次异常,即正常状态到异常状态、接着异常状态又到正常状态,这属于异常,如果这两步操作在异常恢复时间内,即喂狗时间内,IWDG是无法检测到的。而WWDG可以解决。

特殊异常
2. WWDG喂狗机制,当WWDG的递减计数器1T[6:0]大于上限窗口W[6:0]时1,如果尝试去喂狗,将立刻产生CPU复位。

只有在0x60-0x3F内喂狗才有效
WWDG原理

enter description here

喂狗

  1. WWDG配置code
    - 因为WWDG是与APB1连接的,所以需要从APB1相关函数使能WWDG
    - 初始化WWDG,配置计数,计数是有上限的,通过与最大值进行想与来限制。
    - 设置预分频值(PR)
    - 设置上窗口值
    - 使能并且喂狗
    

WWDG初始化配置

中断向量表初始化

必须进行喂狗,不然CPU会不断进行重启。
喂狗

第十七节USART

  1. 主要用于芯片与芯片之间的传输
  2. 芯片与PC之间的通信
  3. 芯片与外围模块之间的通信

UART 异步功能
USART 同步功能
USART_CK具有时钟功能
USART_CTS具有流控功能,因为不同设备之间频率不一样,接发速率也不一样,CTS可以控制是否接受或者发送数据【硬件流控】,可以用于判断是否进行发送数据
USART_RTS发送请求

代码&逻辑

  1. 开启对应总线的时钟,同时需要开启GPIO管脚的时钟