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

2024-06-21 01:04

本文主要是介绍河北工业大学嵌入式系统知识点总结二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于河北工业大学嵌入式系统知识点总结二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079765

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi