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

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

相关文章

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

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具