河北工业大学嵌入式系统知识点总结二

STM32 的最小系统
定义:指以某控制器为核心,可以运行起来的最简单的硬件组成。
组成:电源电路、时钟电路、复位电路、启动电路和程序下载电路。
电压调节器三种工作模式
运行模式、停止模式、待机模式
三种低功耗模式(功耗递减顺序)
睡眠模式、待机模式、停止模式
在 STM32 中,有 4 个时钟源 HSI、HSE、LSI、LSE
HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。
HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。
LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。
STM32 将时钟信号(如 HSE)经过分频或倍频(PLL)后,得到系统时钟,系统时钟经过分频,产生外设所使用的时钟。
PLLMUL:PLL倍频系数,软件设置pll系数,只有再pll关闭情况下可以被写入
PLL支持2~16倍频
复位
目的:将系统强制定位在一个可知状态
三种复位形式:系统复位、电源复位、备份区复位
ARM 时钟复杂的原因
使外设和微处理器协调工作
时钟分开有助于实现低功耗
基于 CMSIS 标准的软件架构主要分为以下 4 层
用户应用层、操作系统及中间件接口层、CMSIS 层、硬件寄存器层
CMSIS 层主要分为三部分
核内外设访问层、中间件访问层、设备外设访问层
FWLib 固件库
固件库是一个固件函数包,它由程序、数据结构和宏组成
包括微控制器所有外设的标准驱动函数(接口)
优点:通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设
使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本
常用外设名称
RCC 复位和时钟控制器
TIM 高级、通用或基本定时器
GPIO 通用 I/O 出端口
EXTI 外部中断/事件寄存器
NVIC 嵌套向量中断控制器
USART 通用同步异步收发器
GPIO 有多组端口(PA、PB 等),每个端口有 16 位(0~15),每个端口有 6 个 32位寄存器(GPIOx_ODR、GPIOx_BSRR),1 个 16 位寄存器(GPIOx_BRR)
GPIO 端口的每个位可以由软件分别配置成多种模式
模拟输入、浮空输入、上拉输入、下拉输入
开漏输出、推挽输出、复用开漏输出、复用推挽输出
最常用的是浮空输入、上拉输入、推挽输出、复用推挽输出
GPIO 速度选择
在 I/O 口的输出模式下,有三种速度,2MHz、10MHz、50MHz。这里的速度
指 I/O 口驱动电路的响应速度而不是输出信号速度。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
(计算)控制 GPIOB PIN10 输出电平的位绑定区地址是?位别名区地址是?
GPIOB 的地址为 0x40010C00,控制 GPIOB PIN10 输出的寄存器(ODR)地址为 0x40010C0C , 位 绑 定 区 地 址 为 0x40010C0D ( PIN0~PIN7 所 在 字 节 的 地 址 为 0x40010C0C,PIN8~PIN15 所在字节的地址为 0x40010C0C+1),PIN10 位于所在字节 的第 2 位,所以 n=2,位别名区地址为 0x42000000+(0x40010C0D-0x40000000)×32+2×4=0x422181A8
GPIO 固件库 stm32f10x_gpio.c、stm32f10x_gpio.h。
.h 头文件包含函数声明及函数 使用的变量,如 GPIO_Speed_TypeDef 的定义在.h 头文件中。
.c 文件包含函数的具体实 现,如 GPIO_Init 函数的具体函数体在.c 文件中。定义 GPIO 寄存器组的结构体 GPIO_TypeDef 在库文件 stm32f10x.h 中
ODR、BSRR、BRR 三个寄存器理解
参考gpio篇最后的示例程序
0 为低电平,1 为高电平。
ODR 寄存器直接控制端口某位的输出电平,如 GPIOA->ODR=0xfffe,意思是 GPIOA 的 PIN0 位置 0,其他位置 1。
BRR 和 BSRR 寄存器通过控制 ODR 寄存器的位来间接控制端口某位的输出电平。
BSRR 对 ODR 的每位进行置 1 和复位操作(置 0),BRR 对 ODR 的每位进行复位操作 (置 0)。
BSRR 的低 16 位中,某位置 1 就代表着 ODR 的某位置 1,也就代表着GPIOX 的某位置 1。BSRR 的高 16 位中,某位置 1 就代表着 ODR 的某位置 0,也就代表着 GPIOX的某位置 0。若高 16 位和低 16 位同时设置且都对应 ODR 的某一位,则以低 16 位为准。
例如 GPIOA->BSRR=0x00040002,意思是 PIN3 置 0,PIN2 置 1。
GPIOA->BSRR=0x00040004,意思是 PIN3 置 1。
在 BRR 的 16 位中,某位置 1 就代表着 ODR 的某位置 0,也就代表着 GPIOX 的某位置 0。例如 GPIOA->BRR=0x0004,意思是 PIN3 置 0。
中断:单片机执行主程序时,由于某个事件的原因,暂停主程序的执行,调用相应的程序处理该事件,处理完毕后再自动继续执行主程序的过程。
中断通道:处理中断的信号通路,每个中断通道对应唯一的中断向量(中断服务程序的入口地址)和中断服务程序(为处理中断而编写的程序),但可具有多个中断源
NVIC 用来设置中断优先级,分为占先优先级和副优先级
高占先优先级的中断可以打断低占先优先级的中断服务,构成中断嵌套相同占先优先级的中断之间不能构成中断嵌套。
副优先级不可以中断嵌套。但占先优先级相同但副优先级不同的多个中断同时申请服务时,先响应副优先级高的中断。
当占先优先级和副优先级都相同的多个中断同时申请服务时,首先响应中断通道所对应的中断向量地址低的中断。
中断的优先级时针对中断通道的。中断通道对应的多个中断源的执行顺序,取决于中断服务程序
中断优先级控制位有 0~4 共 5 组,优先级越小,级别越高
中断和事件
中断是需要 CPU 参与的,需要软件的中断服务函数才能完成中断。
事件是靠脉冲发生器产生一个脉冲,进而由硬件自动完成这个事件。
事件机制提供了一个完全由硬件自动完成触发到产生结果的一个通道,不需要软 件的参与,降低了 CPU 的负荷,节省了中断资源,提高了响应速度,事件是利用硬件来提升CPU 芯片处理事件能力的一个有效方法。
USART 的接口通过 RX(接受数据输入)、TX(发送数据输出)和 GND 三个引脚与其他设备连接在一起。
帧的字长可以为 8 或 9 位,
在起始期间,TX 引脚处于低电平,即起始位是 0
在停止位期间,TX 引脚处于高电平,即停止位是 1
完全由 1 组成(从起始位到终止位)的帧成为空闲帧
完全由 0 组成(从起始位到终止位)的帧成为断开帧
起始位是 0,停止位是 1,中间的数据位全 1 是全 1 帧
起始位是 0,停止位是 1,中间的数据位全 0 是全 0帧
停止位有 0.5、1、1.5、2 位的情况
波特率是每秒钟传送二进制位数,单位为位/秒,表征数据传输速度,不是字符实际传输速度。字符的实际传输速度指每秒钟所传字符帧的帧数。
(计算)波特率=fPCLX/(16×USARTDIV),单位 kb/s
取 36MHz 或 72MHz,适用时要先乘 1000,把单位换成 KHz
USARTDIV 的数据存在了寄存器 USART_BRR 中,USARTDIV 和USART_BRR 的换算如下:
假设 USART_BRR=0x1BC,则 USARTDIV=(0x1B.C)=1×16^1+11×16^0+12×16^-1=27.75D
假设 USARTDIV=25.62,则
Fraction=0.62×16=9.92≈10=0x0A
Mantissa=25=0x19
故 USART_BRR=0x19A。
当 36MHz 时,波特率=36000/(16×25.62)=87.82kb/s
假设 USARTDIV=50.99,则 Fraction=0.99×16=15.84≈16=0x10,Mantissa=50=0x32,
故 USART_BRR=0x330。当 72MHz 时,波特率=72000/(16×50.99)=88.25kb/s
串行通信
异步通信方式:发送方和接收方采用独立的时钟
同步通信方式:每个数据块的开头以同步字符 SYN 加以指示,没有起始位和停止位。
STM32 定时器类型
2 个高级控制器 TIM1、8,4 个通用定时器 TIM2、3、4、5,2 个基本定时器 6、7,1 个实时时钟 RTC,2 个看门狗定时器和 1 个系统滴答定时器SysTick。独立看门狗比窗口看门狗的时间精度低,但是它可以独立工作。SysTick 可用于精确延时到 us、ms 级别。RTC 提供日历/时钟。
APB1 不但要为 TIM2~7 提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7 仍能得到较高的时钟频率。
通用定时器 TIMx 的计数模式有向上计数模式、向下计数模式和中央对齐模式
(计算)定时时间=(预分频器+1)×(自动装载寄存器+1)/脉冲频率=(TIM_PSC+1)× (TIM_ARR+1)/CK_PSC=(TIM_Prescaler+1)×(TIM_Period+1)/TIMxCLK
  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只川页

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值