
STM32 基础
文章平均质量分 65
STM32 的基础 GPIO外设、总体架构和时钟、HAL开发入门、STM32中断、串口通讯、I2C通讯。
雁过留声花欲落
这个作者很懒,什么都没留下…
展开
-
STM32 硬件中的基本的三类寄存器
用于反映设备当前的工作状态。它包含了一些标志位,比如数据是否准备好被读取、是否发生错误、是否处于忙碌状态等。通过读取状态寄存器的值,软件可以了解设备的即时状态,并据此做出相应的处理。用于存储控制和配置相关的信息。通过写入特定的值到控制寄存器,可以设置设备的工作模式、功能启用或禁用、中断使能等各种参数,从而对设备的行为进行控制和管理。用于存储实际要传输或接收的数据。当进行数据读写操作时,数据会在数据寄存器中进行暂存和交换。原创 2024-11-25 21:34:50 · 573 阅读 · 0 评论 -
STM32 掩码(mask)
有0出0 检测 &1 就是取0/1。&~ 有0出1 关闭 &~1 就是清0。^ 相同为0相异为1 ^1 就是翻转。| 有1出1 打开 |1 就是置1。原创 2024-12-02 11:08:20 · 406 阅读 · 0 评论 -
STM32 串口和I2C结合案例 hal库代码书写
打开cubemx->选择芯片STM32F103ZET6,双击打开System Core系统核心->SYS下->DeBug选择Serial Wire串口System Core系统核心->RCC下->high Speed Clock(高速时钟)以及LSE全部选择外部晶振System Core系统核心->GPIO下->PA0/PA1/PA8 三者全部选择GPIO_Output,具体配置项 ->GPIO output level 输出电平->三者都选high。原创 2024-12-06 21:38:28 · 2220 阅读 · 0 评论 -
STM32 名称解析---ARM---最小系统
内容:ARM 将其现成的处理器内核图纸(如 Cortex-A、Cortex-M、Cortex-R 系列)授权给芯片厂商。示例:过去的高通骁龙、联发科(vivo,oppo)等厂商的许多 SoC 使用 ARM 的标准 Cortex 内核,如 Cortex-A78、Cortex-X1 等。厂商的角色:厂商可以自主设计 CPU 内核以满足特定需求,实现更好的性能和差异化产品 示例:苹果芯片和现在的骁龙和华为麒麟。2016 被日本软银集团收购。Cortex-A:手机、平板。Cortex-R:汽车、工业。原创 2024-11-18 20:06:04 · 390 阅读 · 0 评论 -
STM32 led代码书写逻辑流程---升级
标准库分为1、片上外设驱动Driver 2、3、启动文件。原创 2024-11-19 20:13:02 · 409 阅读 · 0 评论 -
STM32 外设总线的架构---GPIO的功能---I/O端口位的基本结构
代码在cpu中执行要想访问外设要穿过总线矩阵经过AHB高级高性能总线通过桥接分成两份总线APB1高级外设总线APB2高级外设总线,外设会挂载在两根高级外设总线上。为了频率所以分成份总线一个快线一个慢线,总线不仅传输数据还提供时钟信号。RCC控制器就是控制后面外设的时钟信号使能。原创 2024-11-19 20:45:38 · 224 阅读 · 0 评论 -
STM32 时钟信号---系统滴答定时器和时间换算问题
如果没有时钟信号,那么所有MOS管都会有消耗,而时钟信号RCC的诞生解决了这个问题。存储电路时需要时钟信号的,看数电中D锁存器和D触发器。运算电路是不需要时钟的,看数电中的半加器和加法器。所以不允许在开启时钟代码之前,书写代码运算。时钟信号为什么可以节省电量?原创 2024-11-20 20:16:28 · 227 阅读 · 0 评论 -
STM32 Keil_v5和keil_v32合并---keil添加.c和.h文件方法
的路径,然后打开vscode->设置->搜索keil然后对51的路径进行粘贴记得后面加上。以记事本的打开方打开,对里面的内容进行复制,然后找到。以记事本的方式打开,将复制的内容复制到末尾。复一份,然后再keil_32->粘贴。第三部:在当前文件里将上面32中的。复制,将其覆盖下方51中的。原创 2024-11-20 20:17:00 · 633 阅读 · 0 评论 -
STM32 对LED进行封装---书写delay.c 和delay.h
第二步:在考虑返回值和参数,开灯和关灯需要参数,根据之前的代码可以想到穿的是掩码,但是最后是用系统宏定义的,所以需要找到宏定义的类型,通过Ctrl跳转可以找到类型是uint16_t,疑问:寄存器是32位为什么这里用16位类型?i类型要定义在前面只是51的规定,当然在32中如果类型不定义在前也可以,但是需要进行配置,配置方法:第一步,打开keil,第二步打开魔法棒,第三步选择C/C++栏下将c99code栏勾选。第一步:思考有初始化,开灯,关灯,翻转三个函数。在led.h文件下书写。在led.h文件下书写。原创 2024-11-20 20:37:51 · 618 阅读 · 0 评论 -
STM32 通过STM32cubemx软件进行代码生成(led灯闪烁)并最后封装点亮、熄灭以及翻转灯函数。
不要再MDK-ARM文件下创建封装文件,因为再进行复制新项目的时候需要将MDK-ARM删掉,会将封装文件删除,所以我们应该将封装文件新建在上一个目录中。然后再kile中添加.c 和头文件目录。hail.ioc,可以用来修改配置,工作日志和配置文件。MDK:可以看到个keil各种文件项目路径。Core:核心->Inc:各种头文件。Drivers:驱动文件。->Src:各种源文件。原创 2024-11-22 20:11:36 · 696 阅读 · 0 评论 -
STM32 通过按键方式触发中断的处理流程
AFIO整个STM32 的开关网络(内部就是一大堆开关),STM32 的引脚有很多可以做通用模块也可以做复用模块通用模块引脚连接GPIO复用模块引脚连接AFIO,而复用模块的选择就是AFIO来控制。通过需求是按键,所以需要捕获外面传过来的上升沿或者下降沿,外面传过来的上升沿或者下降沿所能触发的中断我们称为外部中断(STM32芯片的外部)NVIC里面有一个嵌套优先级和排队优先级的划分线,可以设置线让左边两位为嵌套优先级,右边两位为排队优先级,划分的话,先比嵌套然后比排队。方向:1:内核其他控件(灰色的图2)原创 2024-11-22 21:19:49 · 1141 阅读 · 0 评论 -
STM32 时钟树---波特率和比特率
晶振是没有办法做小的,所以内部时钟源不是晶振做的,而是RC震荡电路,通过电阻和电容进行振荡,但是它们对温度非常敏感不符合时钟信号需要稳定的初衷。根据需求是否是低成本和高精度的需求来选择是外部晶振还是内部RC,然后确定系统时钟要多少MHz,最后进行分频和锁相环达到系统时钟(CPU的工作频率)。时钟树:一套硬件电路,控制时钟生成和时钟供给的。HS-high Spend -高速。时钟树(大树)分两部分I:8MHz。LS-LOW-Spend-低速。I-Internal-内部。E-External-外部。原创 2024-11-22 21:37:19 · 339 阅读 · 0 评论 -
STM32 案例计算机和串口通讯-需求及大概配置
收发数据之前要 读状态寄存器:TXE 当TDR寄存器中数据被硬件转移到移位寄存器的时候,该位被硬件置位。RXNE:当RDR一位寄存器数据被转移到USART_DR寄存器中,改为被硬件置位。对USART_DR的读操作可以将该位清零。配置收发使能和串口使能 :CR1-》TE transmit enable 发送使能 RE 接受使能 IDLEIE 终端控制使能。收发数据:DR寄存器底层由两个寄存器组成,一个发送数据寄存器一个接收数据寄存器。配置波特率 usart1 的。UE USART使能。原创 2024-11-25 21:30:55 · 211 阅读 · 0 评论 -
STM32 案例计算机和串口通讯及学习方法和重映像printf函数(逻辑查询以及寄存器代码如何书写)
通过查看USART框图,可以看到使能都在CR1寄存器。原创 2024-11-27 21:45:16 · 3021 阅读 · 0 评论 -
STM32 串口中断翻转流水灯。需求:发送UP正向流水灯,发送DOWN反向流水灯
通过对(索引+1)% 3的操作(索引+n-1)% 3的操作 这里n就是3,对3取余是防止越界。原创 2024-11-28 15:41:57 · 421 阅读 · 0 评论 -
STM32 I2C协议
主设备和从设备,内部都是开漏模式工作,如果是推挽从设备之间就容易发生短路。原理是如果一个设备它是高电平连接电源,另一个设别需要发送低电平接地,那么两个设别就会产生回路,产生短路。紧跟设备地址的一个数据位用来表示数据传输方向,它是数据方向位(R/W),第 8位或第11位数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据。设备空闲时,输出高阻态,当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。可连接多个I2C通讯设备,支持一主多从也支持多主多从。原创 2024-11-29 18:50:56 · 271 阅读 · 0 评论 -
STM32 I2C协议案例:软件模拟I2C M24C02(EEPROM芯片的一种)及代码
由于I2C通讯时常常是地址跟读写方向连在一起构成一个8位数,且当R/W位为0 时,表示写方向,所以加上7位地址,其值为“0xA0”,常称该值为I2C设备的“M24C02的SCL及SDA引脚连接到了STM32对应的I2C引脚中,结合上拉电阻,构成了I2C通讯总线,它们通过I2C总线交互。E2PROM芯片的设备地址一共有7位,其中高4位固定为:1010,低3位则由E3/E2/E1信号线的电平决定E2PROM设备地址。当R/W位为1时,表示读方向,加上7位地址,其值为“0xA1”,常称该值为“原创 2024-11-29 19:35:40 · 423 阅读 · 0 评论 -
STM32 软件模拟I2C 操作时序图
m24c02芯片手册可以查看时序图。原创 2024-11-29 20:57:22 · 355 阅读 · 0 评论 -
STM32 I2C案例2:硬件实现I2C 代码书写
STM32的 I2C 外设可用作通讯的主机及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。上拉电阻因为有电阻,所以电容会缓慢上电,所以电平会是缓慢上升,下降时电容接地,因为没有电阻阻拦,所以成为低电平用时会非常短,接近无。NOSTERETCH 位禁止时钟延长:从设备会将SCL线拉低,告诉主设备传输太快,主设备会停止,直到从设备拉高。STM32的I2C外设还支持 SMBus2.0协议,SMBus协议与I2C类似。原创 2024-12-02 11:10:45 · 295 阅读 · 0 评论 -
STM32 通过按键 控制屏幕的亮度 屏幕的亮度要配成10个挡位 SW5 升高亮度 按键SW6 降低亮度
按键中断,LCD屏幕,通用定时器计时亮度。原创 2024-12-03 21:36:48 · 387 阅读 · 0 评论