单片机学习笔记
文章平均质量分 63
以STM23F407系列的MCU为主控,作为第一款单片机的进行学习,通过配置寄存器了解底层逻辑和架构。
嵌入式阿役
02年,23届物联网工程毕业,入职深圳一家中小型公司研发部做嵌入式开发已有一段时日,在嵌入式的学习生涯中养成的习惯改变了我的人生轨迹和日常生活,目前主要是做底层驱动和应用层的开发,今后将会一直学习下去,同时也会分享在学习和开发过程中的历程和感悟。
展开
-
18.关于运算符 按位或 的思考
【代码】18.关于运算符 按位或 的思考。原创 2024-04-29 10:17:54 · 226 阅读 · 0 评论 -
17.IIC原理及应用
极低的电流消耗抗高噪声干扰电源电压范围宽工作的温度范围广在 IIC 总线中 唯一出现的是被定义为起始 S 和停止 P 条件 见下图的情况,也就是起始信号和停止信号标准模式100kbit/s:5 - 6us快速模式400kbit/s:2 - 3us。原创 2024-04-29 10:00:55 · 671 阅读 · 0 评论 -
16.SPI原理及应用
串口:异步串行全双工SPI:同步串行全双工(同步串行半双工)SPI(Serial Peripheral interface):是由Motorola(摩托罗拉)公司开发的串行外围设备接口,是一种高速的,全双工,同步的通信总线。主要应用在 EEPROM,FLASH(存储),模块通信(LCD、OLED显示控制芯片),实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等器件。速度可达Mhz为单位 25Mhz左右W25Q64 FLASH存储芯片 W25Qxx xx存储空间总大小。原创 2024-04-29 09:46:41 · 1352 阅读 · 0 评论 -
15.标准外设库使用
较新的一种外设库,为了兼容多种OS和上层应用框架设计而设计,结构分层比较明显,相对SPL来说,层次比较多。直到现在几乎都是在维护这种库。1.库的文件量比较庞大,我们可以在原先的工程文件下新建一个LIB文件夹存放库的SRC和INC。其中每个点C以及对应的点H文件都表示一种外设的全部封装函数功能,全部都要添加到虚拟设备数。最为常见的也是最早的外设库,执行效率高,框架整洁易懂,维护日期较早。下载驱动 串口驱动 --- CP2102(这个因板子而异)2.库文件有了,接下来需要找到库的支持文件。原创 2024-04-29 09:39:08 · 207 阅读 · 0 评论 -
14.WWDG&DMA
使用它之前需要设置,只要告诉它一共有多少个数据(数据大小),从哪里搬到哪里(传输方向),一次搬多少个(传输多少个数据),让后开启它即可,这个数据搬运的过程就完全不需要CPU参与。:每一个不同的外设功能都对应一个通道,如果需要知道具体哪个外设功能对应哪一个通道,需要去查找DMA的通道功能映射表 ----- 中文参考手册 9.3.3通道选择。DMA2:支持三种传输方向(外设到存储器、存储器到外设、存储器到存储器)DMA1:支持两种传输方向(外设到存储器、存储器到外设)原创 2024-04-29 09:25:50 · 423 阅读 · 0 评论 -
13.IWDG
写入键值 5555h 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问(请参见第 18.3.2 节)必须每隔一段时间便通过软件对这些位写入键值 AAAAh,否则当计数器计数到 0 时,看门狗。位 15:0 KEY[15:0]:键值 (Key value)(只写位,读为 0000h)写入键值 CCCCh 可启动看门狗(选中硬件看门狗选项的情况除外)配置关键字寄存器,使能预分频器和重载值寄存器的访问。IWDG->KR寄存器。配置预分频数和重载值。原创 2024-04-29 09:23:00 · 304 阅读 · 0 评论 -
12.ADC模数转换
通常为8,10,12,16位等。绝对精度:对于A/D,指的是对应于一个给定量,A/D转换器的误差,其误差大小由实际模拟量输入值与理论值之差来度量。配置ADC,12bit分辨率,不采样通道(默认一组,就是不分组),数据对齐,ADC预分频设置,0-36Mhz。设置各通道采样周期,设置转换组转换多少通道,设置通道转换排号,例如第一次转换的通道是12通道。使能对应的ADCx,一共有1、2、3,每一个ADC下的通道都有对应的IO口,具体查数据手册。连续不扫描:通道转换完一次之后会紧接着第二次转换,但只转换一个通道。原创 2024-04-29 09:19:26 · 342 阅读 · 0 评论 -
11.输入捕获,中断
监控外部输入信号的脉冲宽度,一个脉冲的有效时间监控外部输入信号的周期和占空比------PWM波捕获电平时间 --- 捕获按键时长驱动超声波模块。原创 2024-04-28 09:15:34 · 791 阅读 · 0 评论 -
10.通用定时器
驱动电机 RGB LED亮度(呼吸灯) 舵机(遥控车、机械臂)原创 2024-04-28 09:11:58 · 235 阅读 · 0 评论 -
9.基本定时器
基本定时器( TIM6 和 TIM7)的特性包括: 重装载值(ARR) 分频系数/分频数(PSC)介于 1 和 65536 之间(注意:寄存器填入值从0开始,范围0 - 65535) 2分频:2 - 1。● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数(PSC)就比如STM32F103系列,只有4个定时器,3个通用定时器,1个高级定时器。基本定时器的个数,不同芯片的定时器数量不一定一样,有些芯片没有基本定时器。ARR重装载值,PSC分频数设置,计数值设置。原创 2024-04-28 09:04:30 · 239 阅读 · 0 评论 -
8.SysTick定时器
因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同,你需要检视芯片的器件手册来决定选择什么作为时钟源。选择时钟源,复位值是默认外部时钟,置1为内核时钟168Mhz,外部时钟进入要通过8分频,所以是21Mhz。RTC---1s定时期----实时时钟。看门狗---产生复位。原创 2024-04-28 08:53:32 · 408 阅读 · 0 评论 -
7.EXIT外部中断
源(16+7)0–15:IO管脚有关7:芯片内部外设中断触发通道(RTC唤醒中断、RTC闹钟、RTC入。作用:检测GPIO口电平变化,EXTI控制器(单独一个)可以产生中断信号给到NVIC控制器23个中断。打开EXTI外部中断时钟SYSCFGRST,将中断线映射到IO口(重点)事件:不需要CPU参与(外设和外设之间发生的)---IO口开启定时器。也可以用边沿触发实现,就不用获取按键状态,前提是下降沿触发打开。配置要映射的IO口,打开端口时钟,设置为输入模式,外部中断:需要CPU参与---中断服务函数。原创 2024-04-28 08:50:00 · 325 阅读 · 0 评论 -
6.NVIC中断配置(ST的精简ARM中断体系)
触发条件为串口接收数据,且只有接收中断触发后空闲中断才触发一次,特别注意的是串口助手的发送新行,会将数据补上\r\n,注意辨别。//标志位RXNE 标志也可以通过向该位写入零来清零,接收数据机器置1。if((USART1->SR) & (1<<4))//表示触发了接收中断且接收完了数据。//读取数据放到数组。if((USART1->SR & (1<<5)))//表示接收到了数据。为了对具有大量中断的系统加强优先级控制, NVIC 支持优先级分组机制。第二步:往PRI_N写入值,确定占先级别值和次级级别值。原创 2024-04-27 09:01:33 · 574 阅读 · 0 评论 -
5.USART应用操作
位 7 TXE:发送数据寄存器为空 (Transmit data register empty) --- 主要读取判断数据是否可以发送。判断数据是否可以发送,可以发送此位为1,不可以发送此位为0。位 13 UE: USART 使能 (USART enable)状态寄存器(USART_SR) --- 标志位(读取判断状态)位 13:12 STOP:停止位 (STOP bit)0: 1 起始位, 8 数据位, n 停止位。1: 1 起始位, 9 数据位, n 停止位。该位由软件置 1 和清零。原创 2024-04-27 08:55:14 · 288 阅读 · 0 评论 -
4.串口通信
波特率:控制两个器件之间的数据传输速率,波特率越大数据传输速率就快 MCU -à PC通信 波特率设置为9600/115200256000(也是可以的,不建议用)GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10。USART_DR为数据寄存器,包括数据接收和发送两个寄存器,是数据所在地。USART_CR1对着配,使能以及过采样的倍数,最后串口使能。硬件分析,先对原理图进行分析可以复用的IO口,确认IO口。原创 2024-04-27 08:51:02 · 461 阅读 · 0 评论 -
3.输入操作
看原理图 -> 蜂鸣器如何驱动有源蜂鸣器: 内置震荡源 有源蜂鸣器只需要给电平就能够驱动(简单)无源蜂鸣器:无内置震荡源 外接一个震荡源才能驱动(复杂)硬件分析:代码流程:BEEP --- PE0 --- 通用推挽模式打开时钟(GPIOE)初始化PE0给高电平。原创 2024-04-27 08:48:12 · 402 阅读 · 0 评论 -
2.配置GPIO
打开端口时钟使能,频率为168Mhz先进行IO口模式清零设置IO口模式为通用输出模式配置IO口模式为通用推挽输出模式设置输出速度,一般为50Mhz对输出数据寄存器进行写操作可以直接改变输出的电平高低。原创 2024-04-26 09:08:30 · 331 阅读 · 1 评论 -
1.初识M4
内核以外就是外设,片内外设就是片上外设,同一种意思不同说法,片外外设是值集成电路外围的设备,也就是我们嵌入式开发板上外接的设备。假设:数据为:unsigned char data=11111111(0b);long:在32位的系统下是4字节,在64位的系统下是8字节。需求将低四位数据变为0,不改变高四位数据。基本类型,构造类型,指针类型,空类型。清0操作:data&~(15)double:8字节,64位。float:4字节,32位。置位操作:data原创 2024-04-26 09:02:57 · 384 阅读 · 1 评论