
STM32
文章平均质量分 84
何事误红尘
从单片机到嵌入式,未遂
展开
-
Keil环境下STM32定位hardfault位置方法(addr2line工具)和遇到的情况
本章主要记录下我实践过的hardfault定位办法。后续遇到hardfault相关问题,也一并补充到本文中,方便自己查阅。原创 2022-07-08 09:30:00 · 10476 阅读 · 2 评论 -
ESP32开发(二):搭建windows开发环境--VSCode操作
VS Code IDE 快速入门教程里有搜索espressifUse exiting ESP-IDF Tools报错:直接按快捷键Ctrl+Shift+P打开命令面板,输入ESP-IDF: Show Examples Projects技术手册下载原创 2022-06-08 15:43:57 · 786 阅读 · 3 评论 -
ESP32开发(一):搭建windows开发环境--ESP-IDF工具命令提示符操作
本文主要记录下使用ESP32的过程。原创 2022-06-07 20:30:00 · 4604 阅读 · 0 评论 -
STM32标准库与HAL库中的Mode和Pull设置
目录概述HAL库标准库再看HAL库概述最近做SDK的BSP驱动。之前使用STM32CubeMX进行开发,设计GPIO的初始化接口包括了mode、pull两个参数。现在对接另一款国产芯片,芯片驱动仅支持标准库,在GPIO的初始化结构体中没有pull成员,且mode也不完全相同。那么该如何处理这两个参数呢?HAL库先看下STM32L152CCTx的工程,GPIO的初始化函数中对于pull的处理:void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTyp原创 2022-03-15 15:29:27 · 3000 阅读 · 0 评论 -
DAC+DMA+TIM实现音频播放问题记录
目录1. 概述2. 音频采样率3. DAC的左对齐和右对齐为什么要使用左对齐左对齐数据的读写音频文件的使用4.5. DMA无法进入中断音频文件的格式1. 概述本文主要记录下音频播放实现过程中遇到的问题。音频文件存储在外部FLASH中,SPI+DMA读取到MCU中,然后进行DAC转换后输入到NS4165B音频功率放大器(数据手册)。第一次接触音频,遇到很多零碎问题,有些很基础,主要是学习单片机时不够扎实,统一记录在这里。2. 音频采样率I2S音频采样率定时器触发,通过调整定时器周期,实现定时器触发原创 2022-02-22 10:36:36 · 2965 阅读 · 0 评论 -
Keil/MDK(0):使用过程中的一些设置/问题
目录0. 概述1. 背景颜色设置0. 概述1. 背景颜色设置Keil 保护视力背景颜色设置原创 2022-02-21 20:09:24 · 5457 阅读 · 2 评论 -
STM32CubeMX使用(三)之DMA使用SPI
目录概述二、Pinout&Configuration2.1 选择端口2.2 开启中断概述二、Pinout&Configuration2.1 选择端口2.2 开启中断DMA设置两个通道原创 2021-11-24 11:43:10 · 20222 阅读 · 2 评论 -
STM32运行过程中降低系统时钟频率
目录一、概述一、概述为了降低功耗,需要降低STM32H7的系统时钟,之前没有这样使用过,使用STMF103测试了下。这里简单记录下原创 2021-10-26 14:43:08 · 6276 阅读 · 0 评论 -
STM32打印log--使用J-Link RTT Viewer及遇到问题
添加链接描述转载 2021-10-21 11:26:11 · 10204 阅读 · 2 评论 -
STM32相关手册使用记录
目录概述一、获取概述STm32一次擦除多少页资源大小一次写入几个字节一、获取数据手册参考手册编程手册勘误手册原创 2021-10-21 11:14:00 · 4173 阅读 · 0 评论 -
STM32问题记录(一):下载、编译、仿真相关
目录1查看外设,如CAN挂载在哪一个总线上?1查看外设,如CAN挂载在哪一个总线上?使用STM32CubeMX生成工程时,并没有显示出CAN挂载在APB1还是APB2上:打开芯片手册《stm32f103rc.pdf》,查看时钟树上也是没有标出的:翻来翻去,结果就在时钟树的上一页:2.使用STM32CubeMX生成工程,下载一次后无法继续下载。提示复位失败。使用镊子短接复位按键–点击下载–立即松开镊子–下载成功。最终查找,是因为STM32CubeMX默认关闭了调试模式。需要根据下载方式,选择原创 2021-10-19 20:24:12 · 2792 阅读 · 1 评论 -
Keil/MDK(2):STM32堆栈使用情况分析
目录一、概述二、查看一、概述这一节主要记录下堆栈空间的设置。二、查看原创 2021-08-24 21:25:48 · 10886 阅读 · 4 评论 -
Keil/MDK(1):查看STM32的RAM和ROM使用情况、优化
1.查看占用的RAM和ROM—直接查看,和keil5需要重新编译2.内容结构和设置方法3.查看各文件RAM使用情况—空间使用情况和优化,缩短数组大小4.查看数组在生成bin文件中的位置—对应验证固定初始化的数组和地址是否对齐...原创 2021-08-23 22:04:18 · 12700 阅读 · 0 评论 -
STM32使用attribute定义数组到flash指定位置、实际应用场景(版本号、固件防呆)
本文记录下程序内将参数直接定义到指定flash地址的方法。原创 2021-06-10 17:03:21 · 13771 阅读 · 1 评论 -
记录STM32分压后电平异常
目录问题概述问题原因问题概述5V接入电路板后,经过分压直连到STM32的IO。STM32通过检测IO电平变化来识别5V是否接入。初始使用两个小阻值分压,功能正常。为了降低功耗,将分压电阻阻值放大十倍,结果无法识别到高电平。问题原因主要是没有考虑到芯片IO配置为上下拉时的内阻。通常分压都是用作ADC采集,使用模拟输入。这时芯片IO禁用了上下拉:而现在是分压后,使用中断识别高低电平变化,IO配置为上/下拉输入。这时外部电路就需要结合芯片IO内阻,来设计分压阻值。查看手册如下:同样是分压,数字输入原创 2021-06-08 11:20:14 · 498 阅读 · 0 评论 -
error: #5: cannot open source input file “stm32f10x_lib.h“:
…\HARDWARE\Scan\Scan.h(3): error: #5: cannot open source input file “stm32f10x_lib.h”: No such file or directory部分变化#ifdef _NVIC #include "stm32f10x_nvic.h"#endif /*_NVIC */stm32f10x_nvic.h中:#define TIM1_CC_IRQChannel ((u8)0x1B) /* TIM原创 2021-05-28 20:56:17 · 13650 阅读 · 3 评论 -
STM32 ADC没有输入电压时,采集结果不为0
相当于一个悬浮电压,大概为3.3V的一半测AD最好不要让该引脚悬空,接个可调电位器也行陌年 14:52:20悬空不是0陌年 14:53:02会有无效数字悬空是一个不确定的状态正常呀,悬空时候电压不稳定本来就不可能为0a/d悬空的时候会有感应或干扰,采集的引脚的电平就会不准确了,一般应接地或接电源等处理,所以不要怀疑程序的问题。尽量不要悬空是因为里面多路开关的特性引起的,开关输入引脚悬空就是个亚稳态产品进行迭代,重新设计电路在旧电路板上可以正常采集...原创 2021-05-28 20:09:42 · 19759 阅读 · 16 评论 -
STM32从设置IO输入上下拉到寄存器GPIOx_BSRR、GPIOx_BRR
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)定义中查找 /* Reset the corresponding ODR bit */ if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) { GPIOx->BRR = (((uint32_t)0x01) << pinpos); .原创 2021-05-25 17:23:31 · 3282 阅读 · 5 评论 -
官网下载keil MDK最新版本、历史版本和芯片pack包
目录最新版本历史版本pack包下载最新版本历史版本ARM Product Updatespack包下载链接:MDK5 Software Packs。原创 2021-05-16 22:14:45 · 29228 阅读 · 1 评论 -
一种软件定时器/超时机制的实现方法
实现方法概述简单方法优化方案计数值自减开启超时超时检测概述在程序设计中,常会遇到需要循环等待的问题,比如在while中等待串口中断接收完一帧数据。这时为了避免一直接收不到,程序进入死循环,我们会选择增加超时退出机制。简单方法这种实现方式相对比较简单,理解起来容易的多。比较适用于超时机制较少的程序。首先需要三个变量,超时开始标志、超时计数值、超时时间到标志:volatile uint8_t g_xxx_Time_On_Flg=0;volatile uint16_t g_xxx_TimeCnt原创 2021-04-27 18:23:43 · 2228 阅读 · 1 评论 -
UART和USART想到同步通信、异步通信
单片机的串口外设有UART和USART,但是实际使用时好像并没有什么区别,都是设置下波特率、数据位、停止位及奇偶校验就完事了,到底有什么区别呢?查看《STM32_MANUAL_CN.pdf》可以看到,USART是通用同步异步收发器,英文是Universal synchronous asynchronous receiver transmitter。而UART显然是通用异步收发器,也就是Universal asynchronous receiver transmitter。也就是说USART可以当成U原创 2021-04-19 20:41:07 · 2475 阅读 · 0 评论 -
STM32的Bootloader实现和遇到的情况
这里写目录标题1. keil设置2. IAP跳转函数3. APP重定向中断向量表1. keil设置设置flash起始地址和大小。IAP从起始地址运行,分配空间为8K,换算成16进制为0x2000,如下图:APP在IAP后,即从0x8002000开始。使用的STM32L051C8Tx flash空间为64K,去除IAP部分还剩56K,APP分配空间为52K,换算成16进制为0xD000,如下图:设置为扇区擦除。IAP和APP程序设置相同,如下图:2. IAP跳转函数跳转函数如下:原创 2020-10-11 16:38:31 · 5335 阅读 · 0 评论 -
STM32 HAL库手册获取和查阅方法以及查看官方例程
首先需要安装pack包。打开STM32CubeMX软件,help->Manage Embedded Software packages,如下图:根据自己的需要,选择芯片系列,选择pack包版本,选择安装。回到STM32CubeMX软件主界面,help->Updatar Settings,查看存储路径,如下图:这里最好不要选在C盘。根据路径在本地查找,就可以看到下载的pack包。按照下图目录即可找到HAL库手册,直接双击打开即可。打开手册后选择搜索,在搜索框输入需要查找的库原创 2020-09-09 22:08:33 · 64567 阅读 · 6 评论 -
STM32 IWDG时间计算方法
以STM32L051为例,代码使用STM32CubeMX生成。从时钟配置界面可以看到,IWDG使用内部时钟。外设配置如下图:计算公式如下:Tout=((4×2^PR) ×RLR)/LSI时钟频率1.LSI时钟频率:即内部低速时钟,图片1中的37K(IWDG所用计时时钟是不稳定的(35-60KHZ),通常取40KHZ计算),为了计算方便,我们直接代入40K。2.RLR:即Reload register (IWDG_RLR),重载寄存器的值,也就是上面的4095。3.PR:即Prescaler原创 2020-09-08 16:38:21 · 6728 阅读 · 4 评论 -
STM32唯一序列号UID--HAL_GetUIDw0详解
STM32L0 读取唯一序列号UID如何读取STM32芯片的唯一IDSTM32 量产时自动写入序列号UUID GUID原创 2020-09-02 16:56:07 · 8403 阅读 · 1 评论 -
STM32CubeMX官网下载方法
主要是对下载链接做个记录,不再从打开百度–搜索ST这样一步步记录。点击STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics,看到如下界面:将页面滑到中间位置,即可看到下载按钮,同时可选择软件版本:回到页面顶部,点击Tools&Software:在此界面可下载相关工具和软件。页面下滑,即可依次找到STM32CubeIDE和STM32各系列的pack包。STM32CubeMX与STM32Cub原创 2020-09-01 20:13:11 · 15934 阅读 · 1 评论 -
STM32标准库官网下载方法
开头贴上下载链接,想要自己尝试的可以根据步骤进行。点击打开链接百度进入ST官网:进入ST官网(不习惯英文显示的可以按图设置成中文。注意下载需要登录,没有的话提前注册一下):按图选择:按图选择:选择哪个都可以,跳转结果是一样的:网页拉到最下面:除了也可在社区下载,貌似不用登陆点击打开链接...原创 2018-03-05 15:40:56 · 5498 阅读 · 0 评论