
STM32笔记
文章平均质量分 73
记录stm32学习笔记
酸钠鈀
嵌入式成长之路
展开
-
串口中断与环形队列——高级应用
由于串口中断服务函数处理串口的数据寄存器的数据时,存储数据和处理数据需要一定的时间,所以接收数据的频率不能太快。为了解决这个问题,在中断服务函数中将串口的数据寄存器值存储在环形队列中,只做存储功能,处理数据的功能放在主函数中。这样一来,就不会遗漏任何一个字节的数据。原创 2024-04-24 17:09:30 · 532 阅读 · 0 评论 -
串口的空闲中断与DMA——高级应用
串口中断接收数据,例如AT指令发送与接收。检测到数据寄存器有数据后触发串口中断,在中断服务函数中,将数据寄存器值存到内存中,并清理非空标志位,这种传统做法是传输一个字节产生一次中断。现在使用DMA,数据寄存器有数据后,DMA自动把数据寄存器值存到指定位置,DMA规定传输n个字节后串口空闲了,然后触发串口中断,在中断服务函数中,清理空闲标志位,这种做法是串口接收到n个字节后产生一次中断。原创 2024-04-24 17:08:33 · 777 阅读 · 0 评论 -
STM32——时钟树、时钟系统、滴答定时器
Systick定时器,是一个简单的定时器,Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。配置CLKSOURCE时,外部时钟源是 HCLK(AHB总线时钟)的1/8,内核时钟是 等于HCLK时钟的。原创 2023-05-13 23:46:28 · 2111 阅读 · 0 评论 -
STM32—DAC详解
数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。DAC输出可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。原创 2023-05-10 17:07:35 · 2417 阅读 · 0 评论 -
stm32串口——串口工作流程详解
串口的几个重要的参数:(详细可以看参考手册的串口章节)完全掌握串口需要先掌握一些串口的基础知识。原创 2023-05-05 12:21:36 · 516 阅读 · 0 评论 -
SPI协议详解——W25Q64使用
SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线SPI有四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select);网上对于通信线的名称大同小异但是功能是一样的同步,全双工支持总线挂载多设备(一主多从):每一个从机都有单独连接主机的SS线,且低电平有效。原创 2023-06-07 23:45:18 · 1758 阅读 · 0 评论 -
STM32——DMA详解
DMA 全称Direct Memory Access,即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。存取方向:存储器和存储器间的传输、外设和存储器、存储器和外设之间的传输DMA作用:为CPU减负。原创 2023-05-10 22:24:58 · 3190 阅读 · 0 评论 -
STM32—ADC详解
12位逐次逼近型的模拟数字转换器。最多带3个ADC控制器最多支持18个通道,可最多测量16个外部和2个内部信号源。支持单次和连续转换模式转换结束,注入转换结束,和发生模拟看门狗事件时产生中断。通道0到通道n的自动扫描模式自动校准采样间隔可以按通道编程规则通道组和注入通道组均有外部触发选项转换结果支持左对齐或右对齐方式存储在16位数据寄存器ADC转换时间:最大转换速率 1us。(最大转换速度为1MHz,在最大时钟ADCCLK=14M,采样周期为1.5个ADC时钟下得到。原创 2023-05-09 21:12:25 · 6532 阅读 · 2 评论 -
STM32定时器——定时器输入捕获与主从模式详解
掌握ICPS、CCxE位的功能。原创 2023-05-08 12:28:52 · 14356 阅读 · 6 评论 -
STM32——PWM DAC详解
PWM输出的是方波,若占空比100%则PWM的实际有效值是3.3v,若占空比50%则PWM的实际有效值是3.3/2v,若占空比为0%则PWM的实际有效值是0v。如图所示:所以PWM DAC输出的电压值等于方波的有效值,有效值又通过占空比控制的,占空比由CCR控制,即PWM DAC输出电压大小与CCR的值成正相关。原创 2023-05-10 17:48:02 · 1787 阅读 · 0 评论 -
STM32定时器——定时器中断的计时应用
根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。APB1=AHB/2、4、8、16时,TIMCLK=APB1×2=AHB/2、4、8、16×2。在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。=72M,APB1由AHB分频可得72/1,72/2,72/4,72/8,72/16。CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。0:关闭,1:打开。原创 2023-05-07 23:54:45 · 2844 阅读 · 0 评论 -
STM32定时器——定时器输出PWM的呼吸灯应用
自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。捕获/比较模块由一个预装载寄存器和一个影子寄存器组成。在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。0:关闭,1:打开。原创 2023-05-08 09:53:11 · 1171 阅读 · 0 评论 -
stm32串口——printf重定向两种方法
此处使用的是usart1,记得先串口初始化。原创 2022-10-12 16:19:38 · 4559 阅读 · 1 评论 -
AT指令透传-连接onenetmqtt服务器
注意波特率、停止位01引脚功能CH_PD为ENAT指令配置步骤。原创 2022-10-12 16:21:10 · 1357 阅读 · 0 评论 -
IIC协议详解
主机控制:起始信号与停止信号从机控制:应答信号(ACK与NACK)数据传输顺序:高位先出数据有效性:SCL为高电平时,SDA数据有效。SCL为低电平时才能改变SDA状态。IIC接上拉电阻,SDA与SCL默认状态为高电平。原创 2023-04-30 22:43:49 · 432 阅读 · 0 评论 -
51单片机串口 溢出率计算
例:若初始值 0xfd;溢出率=1/溢出一次时间=1/ {(0xff+1-0xfd)*(12/11.0592M)}=307200溢出一次的时间{(0xff+1-0xfd)*(12/11.0592M)} = 计数次数 * 时钟周期计数次数 = 0xff+1-0xfd = 最大值 + 1 - 初值时钟频率为11.0592MHZ不能约等于12MHZ串口模式1为8位自动重装载,需要设置SMOD位波特率=( (2^SMOD)/32 )*溢出率 //串口工作模式1,SMOD为0.........原创 2022-06-18 14:33:11 · 1810 阅读 · 0 评论 -
stm32工程模板创建
stm32工程模板创建一、项目文件一览COREOBJSTM32F10x_FWLibSYSTEMUSER以上部分文件来自官方提供的固件库文件:STM32F10x_StdPeriph_Lib_V3.5.0下面继续介绍1.1 CORE核心文件共3个在两个文件夹中可以找到:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupportSTM32F10x_StdPeriph_Lib_V3.5.0\Libraries原创 2022-05-29 20:47:55 · 1013 阅读 · 0 评论 -
stm32PCLK1=HCLK/2
stm32PCLK1=HCLK/2/* HCLK = SYSCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; /* PCLK1 = HCLK 错误 */ /* PCLK1 = HCLK/2 正确 */ RCC->CFGR |= (uint32_t原创 2022-05-06 20:23:20 · 756 阅读 · 0 评论