![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 84
多学点吧。。。
heater404
这个作者很懒,什么都没留下…
展开
-
【STM32】MDK的编译过程及文件类型全解
编译:MDK软件使用的编译器是armcc和armasm, 它们根据每个c/c++和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code,也称目标文件), 其内容主要是从源文件编译得到的机器码,包含了代码、数据以及调试使用的信息。链接: 链接器armlink把各个.o文件及库文件链接成一个映像文件“.axf”或“.elf”。原创 2024-07-09 17:33:54 · 1013 阅读 · 0 评论 -
【STM32标准库】DMA双缓冲模式
设置DMA_SxCR寄存器的DBM位为1可启动双缓冲传输模式,并自动激活循环模式,所以设置普通模式或者循环模式都可以。双缓冲不应用与存储器到存储器的传输。可以应用在从存储器到外设或者外设到存储器。双缓冲模式下, 两个存储器地址指针都有效,即DMA_SxM1AR寄存器将被激活使用。原创 2024-07-08 15:24:42 · 459 阅读 · 0 评论 -
【STM32标准库】USART+DMA
没有使用DMA的USART,我们在前面已经讲过了。【STM32】USART串口通讯-CSDN博客。现在在该基础上我们加上DMA功能,仅使用DMA进行发送。原创 2024-07-05 18:48:39 · 901 阅读 · 0 评论 -
【STM32标准库】在标准库中使用DMA
DMA全称Direct Memory Access,直接存储区访问。DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM和IO设备开辟一个直接传输数据的通道,使得CPU的效率大大提高。STM32F4xx系列的DMA支持外设到存储器传输、存储器到外设传输和存储器到存储器传输三种传输模式。原创 2024-07-03 14:56:43 · 480 阅读 · 0 评论 -
【STM32标准库】在标准库中使用定时器
STM32F407系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器。通常情况下,先看定时器挂在哪个总线上APB1或者APB2,然后定时器时钟需要在此基础上乘以2。原创 2024-06-29 18:15:22 · 751 阅读 · 0 评论 -
【STM32标准库】看门狗
看门狗起始就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新恢复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的简单一点,看门狗就是能让程序出问题时能重新启动系统。STM32有两个看门狗,独立看门狗和窗口看门狗。原创 2024-06-26 18:51:08 · 1261 阅读 · 1 评论 -
【STM32标准库】外部中断
外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。产生中断线路目的是把输入信号输入到NVIC,进一步会运行中断服务函数,实现功能,这样是软件级的。而产生事件线路目的就是传输一个脉冲信号给其他外设使用,并且是电路级别的信号传输,属于硬件级的。另外,EXTI是在APB2总线上的,在编程时候需要注意到这点。原创 2024-06-26 15:15:15 · 1230 阅读 · 0 评论 -
【STM32标准库】USART串口通讯
STM32芯片具有多个USART外设用于串口通讯,它是 Universal Synchronous Asynchronous Receiver and Transmitter的缩写, 即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。有别于USART, 它还有具有UART外设(Universal Asynchronous Receiver and Transmitter),它是在USART基础上裁剪掉了同步通信功能, 只有异步通信。原创 2024-06-26 11:47:34 · 1264 阅读 · 0 评论 -
【STM32标准库】中断应用概述
NVIC是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。在固件库中,NVIC的结构体定义可谓是颇有远虑,给每个寄存器都预览了很多位,恐怕为的是日后扩展功能。不过STM32F407可用不了这么多, 只是用了部分而已。在core_cm4.h文件中// 中断使能寄存器// 中断清除寄存器// 中断使能悬起寄存器// 中断清除悬起寄存器// 中断有效位寄存器// 中断优先级寄存器(8Bit wide)// 软件触发中断寄存器。原创 2024-06-24 19:25:15 · 1151 阅读 · 0 评论 -
【STM32标准库】GPIO复用和映射
STM32F4系列微控制器IO引脚通过一个复用器连接到内置外设或模块。该复用器一次只允许一个外设的复用功能(AF)连接到对应的IO口。STM32F4有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。但是我们咋知道哪个外设复用哪个引脚呢?其实,需要查看手册,在另外一个产品手册中有表格。其实,需要查看手册,在另外一个产品手册中有表格。但是我们咋知道哪个外设复用哪个引脚呢?原创 2024-06-24 17:37:25 · 627 阅读 · 0 评论 -
【STM32标准库】SysTick系统滴答定时器
CM4内核的处理和CM3一样,内部都包含了一个SysTick定时器,SysTick是一个24位的倒计数定时器,当计到0时 ,将 从RELOAD寄存器中自动重装载定时初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。位段名称类型复位值描述16COUNTFLAGR/W0如果在上次读取本寄存器后, SysTick 已经计到了0,则该位为1。2CLKSOURCER/W0时钟源选择位, 0=AHB/8, 1=处理器时钟AHB1。原创 2024-06-21 17:17:24 · 682 阅读 · 0 评论 -
【STM32标准库】时钟树系统
LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。HSE是高速外部时钟,可接石英*/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz*,一般是8MHz。HSE也可以直接做为系统时钟或者PLL输入。HSI是高速内部时钟,RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。PLL为锁相环倍频输出。原创 2024-06-21 11:40:34 · 879 阅读 · 0 评论 -
【STM32标准库】使用标准库检测按键
按键检测使用到GPIO外设的基本输入功能。原创 2024-06-19 12:07:06 · 266 阅读 · 0 评论 -
【STM32标准库】使用标准库点亮LED
LED1的阴极接到了PC13引脚上,我们控制PC13引脚的电平输出状态,即可控制LED1的亮灭。查看手册发现,PC13引脚在AHB1总线上,所以,使能时钟的时候应该是AHB1总线。然后,还需要在keil的USER组文件夹中添加源文件,同时还需要添加头文件目录。最后,在main函数中调用驱动接口,就会发现LED等在闪烁。在USER目录中增加LED文件夹,并新增驱动文件。原创 2024-06-18 18:07:28 · 396 阅读 · 0 评论 -
【STM32】GPIO简介
GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32芯片的GPIO被分成很多组,每组有16个引脚。最基本的输出功能是由STM32控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接入到LED灯,那就可以控制LED灯的亮灭, 引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。原创 2024-06-18 17:05:00 · 588 阅读 · 0 评论 -
【STM32标准库】使用标准库创建一个工程
在使用库开发时,我们需要把libraries目录下的库函数文件添加到工程中,并查阅库帮助文档来了解ST提供的库函数,这个文档说明了每一个库函数的使用方法。多个宏定义用英文逗号隔开了。注意宏定义的配置,头文件目录的加载在配置过程中,keil软件可能出bug,可自行找办法解决。原创 2024-06-18 14:49:39 · 1066 阅读 · 1 评论 -
【STM32】软件I2C控制频率
1、当制作一个延时函数的时候(无论什么方式),当延时足够小的时候,我们就很有必要考虑这个延时函数内部代码本身运行的耗时。2、很多地方计算SysTick->LOAD的时候会最终减1,这个应该是参考了HAL库函数里的写法。但是如果是上文中的mcu,1个计数就是0.02us,可根据实际情况决定是否减1。原创 2023-06-27 19:21:35 · 1945 阅读 · 0 评论 -
【STM32】软件I2C(支持多字节)
I2C总线是一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。在一个i2c通讯总线中,可连接多个i2c通讯设备(分为主机和从机)。主机有权发起和结束一次通信,从机只能被动呼叫。当总线上有多个主机同时启动总线时,i2c也具备冲突检测和仲裁的功能来防止错误产生。原创 2023-06-19 11:51:13 · 3190 阅读 · 0 评论 -
【STM32】制作一个bootloader
/#endif /``关于地址跳转部分,可以参考STM32 Bootloader程序中Jump2App函数分析。原创 2023-06-09 16:35:20 · 10631 阅读 · 8 评论