STM32
sudaroot
全篇完。
本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成长笔记。
笔记是以最简单的方式,只展示最核心的原理。
若有与 大神大大 见解有歧义,我绝对坚信 大神大大 见解是对的,我的是错的。
若无积分等无法下载源码,可私聊私发。
感谢~!
展开
-
STM32CubeIDE FATFS文件系统隐藏文件
隐藏文件:电脑勾选隐藏项还能看到f_chmod("0:systemparameter.config", AM_HID, AM_HID);隐藏系统文件:电脑勾选隐藏项都看不到了,只有文件系统f_open可读写f_chmod("0:systemparameter.config", AM_HID|AM_SYS, AM_HID|AM_SYS);...原创 2021-10-15 08:59:50 · 771 阅读 · 0 评论 -
STM32CubeIDE 复制工程使用CubeMX配置生成后src文件夹内容被删除(移除)
有位大神在我这篇博客《STM32CubeIDE常用操作:汉化,生成hex文件、复制工程、添加文件夹、修改Flash链接地址、支持打印中文、中文字体偏小、代码优化等级》下留言分享一个问题。LonlyPan大神原话:“这里提示以下,复制工程时一定要去新的工程文件夹下删除 .mxproject 文件,不然只要打开 .ioc 文件启动 cubemx 重新配置工程,原工程中的 Core -> Src 的文件就会消失,一定要删除。 原因: .mxproject 会存放工程的绝对地址链接,比如: Sourc转载 2021-07-28 11:01:09 · 4605 阅读 · 6 评论 -
STM32CubeIDE 文件夹出现“钥匙”图标
现象如下图:正常的文件夹图标是:谷歌了一下原因和解决办法:https://mcuoneclipse.com/2012/07/30/icon-and-label-decorators-in-eclipse/https://mcuoneclipse.com/2012/04/16/symbol-defined-or-not-thats-the-question/解决办法:先备份,否则后果自负。右键出现该问题的文件夹图标 -》》 点击 rese...原创 2021-03-11 14:34:17 · 3271 阅读 · 0 评论 -
STM32CubeIDE XiP 和 BootROM介绍, XiP外部内存QSPI FLASH执行用户代码
随言:目前的电子产品功能越来越多,随之而来的就是代码越来越庞大,代码所需要的存放空间也越来越大。比如:用ST做GUI界面,面临最大的问题就是芯片内部flash最大才2M。在现在这个时代,2M其实也放不了几张图片。故ST在某些M4 M7内核芯片上增加了QSPI外设,让用户把代码放在外部存储执行。也同时提供了两种代码启动方式 XiP 和 BootROM模型。STM32CubeIDE QSPI间接模式和内存映射模式 读写W25Q64:https://blog.csdn.net/su..原创 2020-12-07 22:04:23 · 8419 阅读 · 11 评论 -
STM32CubeProgrammer STM32CubeIDE下载算法 外部存储QSPI Flash
随言:STM32CubeIDE QSPI间接模式和内存映射模式 读写W25Q64:https://blog.csdn.net/sudaroot/article/details/109097135MDK KEIL 下载算法外部存储QSPI FLASH:https://blog.csdn.net/sudaroot/article/details/109517371理论来说,STM32CubeProgrammer和 STM32 ST-LINK Utility下载算法程序是一样的,都能相互使用。.原创 2020-12-07 22:04:49 · 8448 阅读 · 14 评论 -
MDK KEIL 下载算法程序 外部存储QSPI FLASH
随言:在外地出差,闲着也是闲着,写写笔记。STM32CubeIDE QSPI间接模式和内存映射模式 读写W25Q64:https://blog.csdn.net/sudaroot/article/details/109097135https://blog.csdn.net/sudaroot/article/details/109097135结束:不想看正文的,下面是已经编辑好的源码,拿好~工程有HAL库版本的,寄存器版本的(移植某点原子)。可以根据自己的硬...原创 2020-12-07 22:04:40 · 7353 阅读 · 10 评论 -
STM32CubeIDE QSPI间接模式和内存映射模式 读写W25Q64
随言:为后面的QSPI内存映射铺垫。QSPI介绍:下面内容摘自《STM32H7xx参考手册中文版.PDF》QSPI控制Flash W25Q64芯片用间接模式。指令阶段这一阶段,将在 QUADSPI_CCR[7:0] 寄存器的 INSTRUCTION 字段中配置的一条 8 位指令 发送到 FLASH,指定待执行操作的类型。尽管大多数 FLASH 从 IO0/SO 信号(单线 SPI 模式)只能以一次 1 位的方式接收指令,但指 令阶段可选择一次发送 2 位(在...原创 2020-12-16 10:19:08 · 16636 阅读 · 17 评论 -
STM32CubeIDE TFT-LCD移植STemWin,直接线性访问(LIN)驱动器
随言:STemWin、emWin 与ucGUI其实都师出同门,都是是Segger 公司之手。STemWin 是Segger 公司为ST公司定制的图形软件库;uC/GUI 是Segger 公司为Micrium 公司定制的图形软件库;与其说是花钱定制的版本,其实都是正统emWin的别名版本,微改动。但是在STM32芯片上面使用STemWin是免费的。当然ST公司也不会给其他芯片使用STemWin的机会,故在库函数里使用了ST芯片内部CRC32寄存器进行校验是否为ST的芯片,若是则工作正常,否原创 2020-10-12 15:22:40 · 2592 阅读 · 0 评论 -
emWin使用VS2019仿真STemWin例子
去官网下载最新的emWin固件包,解压。安装VS2019社区版,登录微软账号即可激活。1、打开emWin压缩包解压后的文件夹,双击打开SimulationTrial.sln此时点击调试,编译会出错,原因是需要额外的设置。emWin文件夹的HowTo_RunSimulationUnderVS2015_2017.txt有说明具体设置什么。...原创 2020-09-13 21:04:33 · 2496 阅读 · 2 评论 -
STM32CubeIDE TFT-LCD移植STemWin,FlexColor(间接访问)两种实现方式
随言:STemWin、emWin 与ucGUI其实都师出同门,都是是Segger 公司之手。STemWin 是Segger 公司为ST公司定制的图形软件库;uC/GUI 是Segger 公司为Micrium 公司定制的图形软件库;与其说是花钱定制的版本,其实都是正统emWin的别名版本,微改动。但是在STM32芯片上面使用STemWin是免费的。当然ST公司也不会给其他芯片使用STemWin的机会,故在库函数里使用了ST芯片内部CRC32寄存器进行校验是否为ST的芯片,若是则工作正常,否原创 2020-10-09 10:23:10 · 3083 阅读 · 3 评论 -
STM32CubeIDE SPI LCD曲线显示
随言:spi_lcd屏幕其实不适合用于曲线显示。数据传输太慢了而且传输数据过程还需传一些设置命令。但是需求来了,就压榨一下也能做出来。硬件:STM32F407 + 1.54寸ST7789屏幕STM32CubeIDE:SPI配置速度最快。ST7789手册:翻一下ST7789这个屏幕显示驱动芯片的技术手册,看一下寄存器,有哪些能提升速度的。看到0xC6这个寄存器可以设置屏幕刷新速度。那就设置成0x01,即111Hz.(不知道为什么设置119Hz黑...原创 2020-08-25 10:39:03 · 4052 阅读 · 14 评论 -
STM32CubeIDE 制作中英字库 显示屏显示中英文
随言:目标制作宽度 x 高度 为16 x 16大小的中文字库 和 8x 16大小英文字库,且在LCD显示。中文编码格式为GB2312,需要用2个字节表示一个汉字。全文需要注意的是开发软件的编码格式是否是GB2312,若不是请用其他编码字库,编程思路一致。1. 简介(百度百科)1.1 ASCII 编码编程的时候使用printf打印debug信息,经常用到ASCII。这真的是再熟悉不过了。ASCII只用到了指定的7 bit二进制数,最大到0 ~ 127。由于ASCII...原创 2020-07-17 20:49:22 · 3874 阅读 · 0 评论 -
STM32CubeIDE 统计及控制PWM产生个数
STM32 HAL库有两个PWM中断回调函数void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) ;PWM脉冲在非阻塞模式下完成回调void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);PWM脉冲在非阻塞模式下半完成回调用以上任一回调函数都能达到控制及统计PWM产生个数。STM32CubeIDE:芯片:STM32F10..原创 2020-07-15 17:51:21 · 4733 阅读 · 1 评论 -
STM32CubeIDE 触摸屏I2C GT9147
硬件:STM32F407ZG + GT9147其中: GT9147使用模拟I2C通讯SCL和SDA。还有RST复位引脚。INT中断引脚:为有效减轻主CPU负担,有触摸时GT9147才会通知主CPU读取坐标信息。触摸屏类似矩阵键盘通过x和y确定点击位置。移植厂商触摸芯片GT9147驱动。我们只需关心下面几个寄存器的值。芯片状态寄存器,很关键。由于芯片支持最多5点触摸,故还需要读取下面每个触摸点的坐标数据。...原创 2020-07-09 15:43:09 · 1665 阅读 · 0 评论 -
STM32CubeIDE SRAM
随言:单刀直入!看不懂就看后面的理论部分。参考文档:《AN2784 Application note Using the high-density STM32F10xxx FSMC peripheral to drive external memories.pdf》官方程序:..\STM32Cube\Repository\STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Examples\FSMC\FSMC_SRAM硬件:...原创 2020-07-01 15:34:27 · 3019 阅读 · 2 评论 -
STM32CubeIDE TFT-LCD显示
随言:TFT-LCD的8080并口时序可以与ST的FSMC总线上操作SRAM的时序类似。故把TFT-LCD挂在SRAM上就能想操作SRAM一样操作TFT-LCD显示了。硬件:STM32F407ZG + 4.3寸TFT-LCD引脚定义:CS:片选引脚,低电平为(选中)使能。RS:命令/数据引脚,用于区分发送过来的是命令还是数据。低电平为命令。WR:写数据引脚。低电平为写入TFT数据。RD:读数据引脚。低电平为从TFT中读取数据。DB[0 : 15]:数...原创 2020-07-06 18:20:54 · 3930 阅读 · 0 评论 -
STM32CubeIDE IAP原理讲解,及UART双APP交替升级IAP实现
0.前言:IAP应该是我唯一想写的文章,从创建这个账号开始。但是不知不觉几年过去了,一直没去写这文章。就随便写写吧~1.什么是IAP?英文名:in-application programming。中文名:应用程序内编程。作用:对于大多数基于闪存的系统,一个重要的要求是能够在最终产品中安装固件时进行更新。 STM32微控制器可以运行用户特定的固件来对微控制器中嵌入的闪存执行IAP。接口:此功能支持的任何通信接口。由于不限制通信接口协议等,...原创 2020-08-23 19:58:42 · 14462 阅读 · 93 评论 -
STM32 HAL底层驱动(STM32F4xx HAL drivers)手册
下载链接:https://download.csdn.net/download/sudaroot/12542183全篇完。本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解方便记录成长笔记。 若有与大神大大见解有冲突,我坚信大神大大见解是对的,我的是错的。 若无法下载源码,可私聊私发。 感谢~!...原创 2020-06-22 10:17:40 · 2209 阅读 · 0 评论 -
STM32CubeIDE USB Audio声卡 WM8978 + I2S
随言:只实现了USB播放音频功能,至于USB录音和控制音量等功能,找到了相关资料,但是个人没时间往下折腾。官方程序X-CUBE-USB-AUDIO:https://www.st.com/zh/embedded-software/x-cube-usb-audio.html文档《UM2195 User manual USB device audio streaming Expansion Package for STM32Cube》:https://www.stmcu.org.cn/document原创 2020-06-18 17:43:33 · 9418 阅读 · 8 评论 -
STM32CubeIDE Audio播放音频 WM8978 + I2S + DMA双缓存模式
随言:这篇《STM32CbueIDE Audio播放音频 WM8978 + I2S》升级版:https://blog.csdn.net/sudaroot/article/details/106528371本来没想写这篇双DMA的缓存文章的,不过想想还是记录一下吧,毕竟自己是健忘患者。先看一下官方手册是怎么说的:小结:1、首先STM32F4系列芯片的DMA1 和 DMA2是支持双DMA缓存区模式的,通过将 DMA_SxCR 寄存器中的 DBM 位置 1,即可使能双缓冲区模式。.原创 2020-06-10 16:14:56 · 8641 阅读 · 2 评论 -
STM32CbueIDE Audio播放音频 WM8978 + I2S
随言:仅想播放声音,一切从简。步骤:了解wav音频格式,了解I2S协议,看手册配置WM8978,把数据通过I2S发给WM8978。简化,暂不使用DMA发送数据,在网上都是双DMA缓存外部存储发送音频数据,容易绕晕。不使用外部存储,使用芯片内部flash存储音频,音频数据加上程序不超过内部flash大小即可。这既是我喜欢STM32CbueIDE这个软件的原因,能实时看到编译后的芯片资源剩余情况。WAV音频格式,自行百度。I2S主要特性:下面内容摘自《STM32...原创 2020-06-04 16:37:14 · 8500 阅读 · 22 评论 -
STM32CubeIDE Audio播放音频,PWM + TIM
先去看《STM32CubeIDE Audio播放音频,DAC + TIM + DMA》这文章,有些内部重复的将跳过,毕竟我懒。参考官方文档:《AN2394 Application note STR7/STR9 audio generation with PWM》链接:框架图:在选择低通滤波器的截止频率时涉及多个设计注意事项。首先,滤波器的截止频率必须比PWM频率低得多,以减少PWM开关产生的噪声。通常,截止频率为10倍的PWM频率就足够了。...原创 2020-05-27 16:07:11 · 4545 阅读 · 7 评论 -
STM32CubeIDE Audio播放音频,DAC + TIM + DMA
官方参考 文档 和 例程:文档编号AN3126 网址:https://www.stmcu.org.cn/document/detail/index/id-200187例程编号 UM0891 网址:https://www.stmcu.org.cn/document/detail/index/id-200294官方硬件连接:文档编号(UM0841)官方例程实现流程图:官方例程播放音频代码:/** * @brief Start wa...原创 2020-05-26 14:39:59 · 6824 阅读 · 3 评论 -
STM32IDE pintf不支持打印小数格式
Problem description: The float formatting support is not enabled, check your MCU Settings from "Project Properties > C/C++ Build > Settings > Tool Settings", or add manually "-u _printf_flo...原创 2020-03-25 17:18:45 · 3470 阅读 · 2 评论 -
STM32之如何定义串口通讯协议定义ASCII和hex
在我们定义串口通讯协议的时候,肯定是首先要考虑通讯协议内容是以ASCII码 还是 hex十六进制。对于这两类的各有各的优点和缺点。一、ASCII优点:1、简单直观。(比如在串口调试助手很容易看懂协议上传的数据)2、数据起始标志位和结束标志位唯一,不与数据内容冲突。(比如起始位为SS,结束位为\r\n)3、适用大小端MCU的协议通讯,8位单片机基本都是大端,32位及以...原创 2020-01-15 16:55:25 · 7765 阅读 · 1 评论 -
STM32字节对齐更改方法
STM32裸板程序默认是4字节对齐,但是STM32如果跑RTOS的话,可能改成单字节对齐。导致协议数据错位错误。typedef struct{ int a; char b; double c; char d[10];}Test_TypeDef;在STM32裸板下该 Test_TypeDef占用32个字节,4(a) + 4(b) + 8 (c)+ 16(d) = 32字节...原创 2020-01-10 16:14:52 · 4781 阅读 · 6 评论 -
计数器与延时delay
delay.c/* * delay.c * * Created on: Dec 5, 2019 * Author: admin */#include "delay.h"#include "main.h"#include <string.h>#if 0void delay_us(unsigned int nus){ unsigned i...原创 2019-10-09 09:07:06 · 1354 阅读 · 0 评论 -
STM32CbueMX之I2C HAL_ERROR 和 DMA 不启动
如果是使用STM32CbueMX生成I2C 的代码,使用 I2C 读写 过程会出现HAL_ERROR。这个时候一般有两种选择, 方式一:是选择IO模拟I2C; 方式二:是排查代码问题解决硬件I2C。使用DMA的时候有时候DMA启动失败,往往这是时候我们就方式使用DMA了,转而使用更低效率的方式发接数据。方式一:问度娘。方式二...原创 2019-12-31 10:22:13 · 6045 阅读 · 3 评论 -
STM32CbueMX之 USB下载更新固件Download Firmware Update(DFU)之四FreeRTOS跳转运行失败
像类似这种跳转,从某个区域执行跳转到另一个区域执行代码,运行失败的基本都是中断问题。在跳转前所有用到的中断应该关闭,恢复外设默认功能状态。在STM32CubeMX中,如果使用FreeRTOS的话,就不能用系统滴答失踪作为系统时钟,需要额外使用某个定时器作为系统时钟。例如我使用了FreeRTOS + TIM14;那么在跳转前必须关闭TIM14的中断。否则会程序跑飞。...原创 2019-10-29 16:53:06 · 1064 阅读 · 0 评论 -
STM32CbueIDE的Debug和Release区别和使用宏
Debug 和 Release 的区别Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。有时候我们想在Debug 版本使用一些printf打印一下信息,而在Release版本不需要这些信息。IDE有相关的宏设置点击 项目 --&g...原创 2019-05-24 19:20:14 · 2040 阅读 · 0 评论 -
STM32CbueIDE下载和汉化
STM32CubeIDE是一个多功能的多操作系统开发工具,是STM32Cube软件生态系统的一部分。STM32CubeIDE是一个先进的C / C ++开发平台,具有STM32微控制器的IP配置,代码生成,代码编译和调试功能。它基于ECLIPSE™/ CDT框架和用于开发的GCC工具链,以及用于调试的GDB。它允许集成数百个现有插件,完成ECLIPSE™IDE的功能。STM32CubeI...原创 2019-05-24 17:39:27 · 13968 阅读 · 16 评论 -
STM32CbueIDE代码格式化
项目 --》》 属性 --》》 C/C++ General --》》 Formatter原创 2019-05-27 09:12:30 · 3035 阅读 · 0 评论 -
STM32CbueIDE 之 串口 printf 函数
1、新建工程2、选择芯片3、工程信息4、配置USART1生成代码。找到main.c添加int __io_putchar(int ch){ HAL_UART_Transmit(&huart1, (unsigned char*)&ch, 1, HAL_MAX_DELAY); return ch;}就可以用printf了...原创 2019-05-24 18:35:17 · 944 阅读 · 0 评论 -
STM32CbueMX之 USB下载更新固件Download Firmware Update(DFU)之三Leave DFU mode会卡死
原因:使用STM32CubeMX配置的DFU功能默认中断抢占优先级是最高级别的 0 和 系统时钟中断抢占优先级一样。在我们点击Leave DFU mode按钮的时候,会触发static void DFU_Leave(USBD_HandleTypeDef *pdev)函数,该函数在往下执行调用的时候,调用到HAL_StatusTypeDef USB_DevDisconnect(USB_...原创 2019-10-25 17:15:45 · 1427 阅读 · 2 评论 -
STM32CbueMX之 USB下载更新固件Download Firmware Update(DFU)之二APP编写及烧录升级
写一个最简单LED闪烁的程序。进入设置,把代码的起始地址 0x8000000 改成0x8010000(上一节有解释); 空间大小0x0100000改成0xFFFFF打开system_stm32f4xx.c文件修改中断向量表的偏移地址。我们APP相对flash起始地址偏移了64KB即0x10000.#define VECT_TAB_OFFSET 0x10...原创 2019-10-25 15:51:51 · 1164 阅读 · 0 评论 -
STM32CbueMX之 USB下载更新固件Download Firmware Update(DFU)之一BootLoader程序编写
声明:以下内容参考:C:\Users\admin\STM32Cube\Repository\STM32Cube_FW_F4_V1.24.1\Projects\STM324xG_EVAL\Applications\USB_Device\DFU_Standalone背景:如果产品有USB电路且接口外露都适用,连上USB,打开DfuSe_Demo烧录固件,即可完成固件更新。固件...原创 2019-10-25 14:38:02 · 4835 阅读 · 1 评论 -
STM32CubeMX硬件随机数
int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_RNG_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ printf("This is RNG. sudaroot\r\n...原创 2019-01-04 08:14:35 · 2274 阅读 · 0 评论 -
STM32MX电源管理低功耗模式
前言:ST官方例程:(直接移植直接用,接口是现成的)在你STM32Cube固件库安装路径下..\..\STM32Cube\Repository\STM32Cube_FW_F4_V1.23.0\Projects\STM32F429I-Discovery\Examples\PWR\PWR_CurrentConsumption例程和测试程序下载链接:https://download...原创 2019-01-02 17:15:48 · 8627 阅读 · 3 评论 -
STM32虚拟串口usb_printf函数及接收函数
官方库例程:..\STM32Cube\Repository\STM32Cube_FW_F4_V1.23.0\Projects\STM324xG_EVAL\Applications\USB_Device\CDC_Standalone\MDK-ARM环境:STM32CubeMX STM32F429IGT6 STlink首先要确保硬件电路USB部分没问题;USB相关的概念知识大概...原创 2019-01-25 17:13:09 · 14923 阅读 · 25 评论 -
keil代码格式化
因为每份代码的作者写代码的习惯和编码时对齐方式不同。让自己看这样的代码很难受。先看看效果吧原代码格式:(随便写的恶心的风格)使用格式化软件后(瞬间心情舒畅)格式化软件Artistic Style 自行官网下载:http://astyle.sourceforge.net/下载完成后,解压在keil5的安装目录,然后打开keil5添加格...原创 2019-03-03 22:28:51 · 11711 阅读 · 3 评论