![](https://img-blog.csdnimg.cn/20200624211115535.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
STM32入门到精通(嵌入式开发基础)
文章平均质量分 88
本专栏层层递进的对STM32进行详细讲解,通过学习此中的STM32知识从而对嵌入式开发有一个基本的认识。如果你刚接触STM32单片机或者嵌入式,或者是你想自学相关知识,这绝对是不二之选。
物联网知识
#公众号:物联网知识
展开
-
STM32在进行CAN总线多节点通信时,同时发数据会一直收不到某设备数据的问题及解决
最近在开发Canopen项目中,进行一主多从设备通信时,主站发送同步帧,两个从站往往只有帧ID优先级高的设备可以让主站接收到数据,而另一个从设备的数据往往接收不到。总的来说,CAN总线的冲突机制通过使用非破坏性的仲裁和标识符比较,以及回退机制,确保了多个节点之间的有序通信,使得总线上的消息能够按照优先级顺序进行传输。遇到CAN总线冲突时,受阻的CAN从设备进行自动回传是我们需要的。在CAN多机通信中,两个设备同时发送数据,帧ID优先级高的CAN设备会“抢占”总线,而另外的设备需要选择冲突解决策略。原创 2023-11-21 14:39:01 · 2630 阅读 · 0 评论 -
STM32使用定时器实现微秒(us)级延时
目前开发STM32普遍使用HAL库,但 HAL 库封装的延时函数目前仅支持 ms 级别的延时,日常很多情况下会用到 us 延时,特别是一些传感器的数据读取过程,对时序要求比较严格,us 延时必不可少,因此我们今天来介绍STM32如何使用定时器实现微秒(us)级延时。原创 2023-08-21 17:52:51 · 2661 阅读 · 0 评论 -
SPI协议解析
SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。原创 2023-06-20 14:41:22 · 536 阅读 · 0 评论 -
STM32之HAL、LL和标准库
我们在进行STM32开发的时候,使用寄存器进行开发的终究是少数,大多数人还是习惯用库函数进行开发。到目前为止,有标准外设库、HAL库、LL库 三种。本文将分别介绍以下三种库,便于大家区分。原创 2023-06-15 16:41:40 · 6415 阅读 · 1 评论 -
STM32使用HAL库,串口收发一段时间后出错问题及解决
当STM32使用HAL库进行开发时,偶尔会遇到串口收发数据量大时,会出现问题。时,可以看到,此函数的源码中,也有上锁和解锁,而且还是和UART_Start_Receive_IT控制的是一个锁!问题的原因锁定在, STM32 HAL库在处理接收的时候会锁一下串口一会,导致变成某个短时间的“半双工”,这个时候如果同时收发就会出现问题。明明STM32的串口通信是全双工的,但使用HAL库的STM32串口收发时发现,数据量大时,同时收发会出现问题。当数据量过大且传输频率快时,串口可能会因为溢出,而不进入串口中断。原创 2023-06-02 11:17:06 · 4753 阅读 · 0 评论 -
基于STM32的定时器--定时中断(HAL库)
本文旨在介绍如何使用STM32CubeMX配置+KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。原创 2023-05-28 15:31:38 · 5101 阅读 · 0 评论 -
使用STM32CubeMX生成STM32工程
随着技术发展的越来越成熟,单片机开发已经出现越来越多好用的开发软件了。STM32CubeMX是一种图形工具,通过分步过程可以非常轻松地配置STM32微控制器和微处理生成相应的初始化C代码。可以对STM32开发提供很大的便捷。本文将介绍如何使用STM32CubeMX生成一个简单的STM32工程,为以后的开发奠定基础。原创 2023-01-11 16:39:15 · 821 阅读 · 0 评论 -
修改Keil开发环境背景(修改为黑色主题)
我们平时在Keil uVision5下开发单片机/嵌入式程序的时候,如果始终用的是官方的主题背景,往往会因为背景太白了,而导致视疲劳。我们使用VSCode往往不会有这种困扰,因为黑色开发背景,不会让我们这么容易视疲劳。本文将逐步讲解如何修改Keil uVision5主题背景,变成黑色的主题。原创 2023-01-09 10:16:07 · 10617 阅读 · 1 评论 -
基于STM32的串口收发讲解(标准库)
串口(UART通用异步收发器,TTL)通讯是一种设备间的串行全双工通讯方式。由于UART是异步传输,没有传输同步时钟,为了保证数据的正确性,UART采用16倍数据波特率的时钟进行采样。因为它简便捷,因此大部分电子设备都支持该通讯方式工程师在调试设备时也经常使用该方式输出调试信息。本文详细的介绍如何来编写一个串口收发程序,我们采用常用的收发逻辑,发送直接编写函数进行实现,而接收使用中断进行完成。接收中断使用接收到一个字节和一帧数据两种中断触发方式。原创 2022-10-27 10:42:31 · 4972 阅读 · 1 评论 -
基于STM32的串口收发讲解(HAL库)
本文详细的介绍如何来编写一个串口收发程序,我们采用常用的收发逻辑,发送直接编写函数进行实现,而接收使用中断进行完成。接收中断使用接收到一个字节和一帧数据两种中断触发方式。原创 2022-10-21 10:17:17 · 9926 阅读 · 0 评论 -
操作系统之进程操作
进程是操作系统最重要的一个概念。对大多数操作系统内的进程能并发执行,他们可以动态创建和删除,因此操作系统必须提供某种机制以创建和终止进程。原创 2022-10-10 17:12:09 · 1731 阅读 · 0 评论 -
嵌入式C/C++常见错误和注意事项
我们在嵌入式开发中,编写完一个新功能,但实现别的效果差强人意,检查后发现逻辑并没有什么错误,此时我们就要注意,是否是C/C++使用技巧的错误。本文就来总结一下,常遇到的错误。原创 2022-09-01 10:10:28 · 760 阅读 · 0 评论 -
STM32使用PWM控制LED灯的亮灭程度
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。原创 2022-09-01 10:08:36 · 9164 阅读 · 2 评论 -
使用STM32CubeMX创建FreeRTOS项目
STM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。FreeRTOS 是与世界领先的芯片公司合作开发了 15 年,现在每 170 秒下载一次,是面向微控制器和小型微处理器的市场领先的实时操作系统 (RTOS)。根据 MIT 开源许可免费分发,FreeRTOS 包含一个内核和一组持续增加的库,可广泛应用于各个行业领域。FreeRTOS 的构建重点是可靠性和易用性。...原创 2022-08-18 17:10:12 · 1195 阅读 · 1 评论 -
STM32CubeMX介绍及安装
STM32CubeMX是被广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。其中STM32CubeMX和STM32Cubeprogrammer,除了对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;.........原创 2022-08-12 11:13:25 · 4428 阅读 · 1 评论 -
基于C/C++的HSV转RGB程序
HSV是根据颜色的直观特性由 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型。其中的H、S、V分别代表色调(H)、饱和度(S)和明度(V)。H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;............原创 2022-08-08 16:41:19 · 1116 阅读 · 1 评论 -
STM32(十)------- SPI通信
在万物互联时代,“通信”对物联网尤为重要。在单片机或嵌入式开发领域,几乎很少有一个硬件单独就能实现所有功能的,即使是单片机裸机开发,往往也需要与传感器进行通信。SPI可以说是我们在嵌入式开发中,最常用的通信协议之一,本文将来介绍什么是SPI协议l,SPI协议的特点是什么,怎么用SPI协议。......原创 2022-07-29 16:39:50 · 2686 阅读 · 0 评论 -
STM32(九)------- CAN
CAN 是 ISO 国际标准化的串行通信协议。CAN 总线是一种应用广泛的现场总线,是近20年发展起来的新技术。是控制电机最常用的协议之一。原创 2022-06-21 18:06:34 · 5083 阅读 · 0 评论 -
STM32(八)------- PWM输出
我们在日常的嵌入式开发中,PWM可以说是我们最常用的一个技术。我们在电机驱动、电压控制、从测量、通信到功率控制与变换的许多领域中,PWM有着无比重要的地位。PWM脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在原创 2022-06-19 20:49:36 · 4927 阅读 · 1 评论 -
基于STM32的MD5校验
我们在嵌入式及单片机的产品开发时,往往需要对一些文件进行检验,来保证此文件是在传输的过程没有被修改或者损坏。比如IAP升级程序时,往往就需要对升级固件进行校验。MD5是其中非常常用的一种检验方式。本文通过使用MD5检验程序,对STM32的Flash中的某一段数据进行检验,检验后存放到字符串里,可用来比对或者输出。......原创 2022-06-17 22:41:31 · 3397 阅读 · 0 评论 -
STM32(七)------- 独立看门狗(IWDG)
STM32 有两种看门狗,提供了更高的安全性、时间的精确性和使用的灵活性,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬,两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。本文主要来介绍独立看门狗。...原创 2022-06-04 22:15:23 · 3022 阅读 · 0 评论 -
基于STM32的Flash读写详解
本文主要介绍STM32多种的内部Flash读写方式和读写长文件的功能函数怎样编写。阅读完本文可以使你能够正常的完成Flash读写操作。介绍STM32 FLASH闪存的编程和擦除Flash读写的标准库函数软件设计FLASH的读取直接读取某一地址的内容读取选定位置的选定大小的内容FLASH的写入直接使用标准库写入写入选定位置的选定大小的内容如何在Keil 5中查看Flash某地址的内容...原创 2022-06-03 13:27:46 · 14328 阅读 · 0 评论 -
基于STM32的Flash擦除方式
本文主要介绍STM32的内部Flash擦除方式和擦除长文件的功能函数怎样编写。并且介绍一些注意事项,如只想擦除当前地址,却发现上下地址都出现了擦除等问题。阅读完本文可以使你能够正常的完成Flash擦除。并对擦除时会影响的地址大小有一个深入的认识,并在对页擦除时,页的起始地址和大小有所了解。...原创 2022-05-31 19:50:14 · 13460 阅读 · 4 评论 -
基于STM32的IAP升级程序
基于STM32的IAP升级程序IAP介绍功能设计硬件设计软件设计软件设计流程如下完整程序具体实现设计功能程序IAP实现程序主程序后续IAP介绍IAP(In Application Programming)即在应用编程,IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能原创 2022-05-26 17:26:48 · 1317 阅读 · 5 评论 -
STM32编程时常见问题及常用技巧
常见问题:STM32主函数执行三次;烧录进STM32,STM32就自动运行;程序不运行;无法使用strncmp与strcmp;常用技巧对比两个字符数组的 前n位是否一样16进制、8进制和整形的相互转换软件复位uint32_t( u32)、 uint16_t( u16)、uint8_t( u8)分别占几个字节...原创 2022-05-28 16:27:34 · 969 阅读 · 0 评论 -
STM32CubeIDE 介绍及安装
STM32CubeIDE 介绍及安装介绍STM32CubeIDE介绍主要特点STM32CubeIDE 下载安装下载安装汉化介绍STM32CubeIDE介绍官网地址STM32CubeIDE是一个多功能的集成开发工具,集成了TrueSTUDIO和STM32CubeMX,它是STM32Cube软件生态系统的一部分。STM32CubeIDE是一个先进的C/C++开发平台,具有STM32微控制器的IP配置,代码生成,代码编译和调试功能。它基于ECLIPSE™/ CDT框架和用于开发的GCC工具链,以及用于原创 2020-08-31 13:59:17 · 2987 阅读 · 1 评论 -
使用 Proteus 仿真 STM32
使用 Proteus 仿真 STM32创建项目新建工程完成连接元器件编辑元件Program FileCrystal Frequency配置供电网后续创建项目新建工程一直下一步就行。选择版型,注意选择什么类型的板子完成连接元器件编辑元件Program File这里是选择你要运行的程序的 HEX 文件。在 KEIL中选择创建HEX文件Crystal Frequency这里很重要,很多人运行不成功都是因为没有在这里设定晶振频率。必须要设定!!!配置供电网要想仿真使用原创 2020-07-06 22:07:41 · 13080 阅读 · 0 评论 -
STM32(六)-------中断(外部中断)
STM32中断应用中断知识介绍STM32 中断应用概览异常NVIC优先级定义中断知识介绍STM32 中断应用概览STM32 中断非常强大,每个外设都可以产生中断。异常F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。其中系统异常有 8 个(如果把 Reset 和 HardFault 也算上的话就是 10 个),外部中断有 60个。除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。...原创 2020-06-25 10:24:46 · 3082 阅读 · 0 评论 -
STM32(五)------GPIO位带操作
GPIO位带操作介绍位带简介外设位带区SRAM位带区位带区和位带别名区地址转换GPIO 位带操作代码解析GPIO 寄存器映射GPIO位操作主函数介绍位带简介位操作就是可以单独的对一个比特位读和写,这个在 51单片机中非常常见。51单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。在 STM32 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,令一个是外设区最低 1MB空间。这两个 1MB的空间除了可以像正常的 RAM一样操作外原创 2020-06-25 09:11:32 · 2395 阅读 · 1 评论 -
STM32(四)--------按键控制LED灯
STM32例子--------按键控制LED灯此工程需要编写以下五个文档原创 2020-04-01 16:43:15 · 3266 阅读 · 0 评论 -
STM32(三)-------流水灯(标准库函数)
STM32例子-------流水灯(标准库函数)工程在这里分为三个程序。main.c ;LED.h ;LED.c原创 2020-04-01 16:09:47 · 2268 阅读 · 1 评论 -
STM32(二)----寄存器讲解
寄存器讲解:原理讲解芯片讲解STM32F103芯片存储器映射寄存器映射STM32的外设地址映射操作实例C语言对寄存器的封装封装总线和外设基地址原创 2020-07-03 22:36:24 · 2382 阅读 · 7 评论 -
STM32(一)----建立嵌入式STM32工程
建立一个STM32工程原创 2020-03-29 21:12:18 · 830 阅读 · 0 评论 -
STM32 (零)--------STM32介绍
STM32,从字面上来理解,ST 是意法半导体,M 是Microelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。STM32 是以32位为一个单位,同时能处理32位。比如51单片机就是一个同时处理8位的单片机。STM32中外设以4个位确定一个引脚功能。 在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星。原创 2020-07-04 22:02:36 · 5505 阅读 · 0 评论 -
下载、安装Keil 5
安装KEIL 5,本文以(STM32嵌入式的为例)一、获取 KEIL5 安装包要想获得 KEIL5 的安装包,在百度里面搜索“KEIL5 下载”即可找到很多网友提供的下载文件,或者到 KEIL 的官网下载:https://www.keil.com/download/product/,(我的博客里有我准备的安装包,可以自行下载)。有新版本大家可使用更高版本。二、开始安装 KEIL5双击 K...原创 2020-03-15 19:07:35 · 4540 阅读 · 0 评论