STM32
文章平均质量分 52
STM32, KEIL, C
William_Zhang_csdn
这个作者很懒,什么都没留下…
展开
-
STM32使用PWM+DMA方式驱动WS2812灯珠
WS2812 内部集成了处理芯片和3颗不同颜色的led灯(红,绿,蓝),通过单总线协议分别控制三个灯的亮度强弱,达到全彩的效果。原创 2022-10-19 14:28:25 · 5479 阅读 · 4 评论 -
FreeRTOS新建任务不执行问题解决办法
FreeRTOS新建任务不执行问题解决办法原创 2022-06-21 10:32:53 · 3926 阅读 · 2 评论 -
记录嵌入式中一种对__DATE__, __TIME__宏记录的日期时间转换为数字格式的方法
一种对编译日期和编译时间拆分为整型数字的方法原创 2022-04-27 18:48:39 · 620 阅读 · 1 评论 -
使用JLink Commander解锁已锁定的MCU
如题,记录一种解锁已锁定的MCU的方式方法打开J-Link Commander;输入unlock Kinetis,回车;像上图所示,出现OK字样就可以了原创 2021-08-24 18:25:55 · 1546 阅读 · 0 评论 -
Keil编译报错[error: #101: “xxx_IRQn“ has already been declared in the current scope]解决办法
一、问题背景开发环境:Keil 5芯片型号:STM32F103C8T6库类型:HAL库移植大彩串口屏驱动代码时,编译出现大量error:#101 错误,如下:error: #101: "RTC_IRQn" has already been declared in the current scopeRTC_IRQn = 3, /*!< RTC global Interrupt */ error: #101: "FLASH_IRQn" has already been declared原创 2021-06-24 00:22:21 · 12178 阅读 · 7 评论 -
JLink提示错误信息read:@0x02000004
一、问题背景开发环境:Keil MDK v5.29使用JLink下载程序时,弹出错误提示窗:The firmware of the connected J-Link(S/N:20090928) does not support the following memory access:Read @ 0x2000004Flags:via AHB-AP.点击OK之后程序可以烧录进单片机,但每次烧录都会弹出这个窗口。二、原因经网上查阅,MDK 5.24之后的版本会出现这个问题三、解决办法使转载 2021-06-19 17:45:13 · 1482 阅读 · 0 评论 -
STM32调试程序停在 B . 处
STM32调试程序停在 B . 处问题描述调试STM32程序时,程序停止在 startup_stm32f103xb.s文件的B .处,如下图所示:原因程序卡死在 B . 处,说明有中断没有处理;比如,启用了某个类型的中断,但是没有对应的中断处理函数,则会出现这种问题;解决办法重点检查一下中断处理函数部分与中断使能部分的对应关系;情况之一:有可能在修改程序的时候不小心屏蔽掉了某个中断处理入口函数。...原创 2021-06-12 17:32:25 · 4120 阅读 · 4 评论 -
printf串口打印数据以及进阶调试用法
一、前言实现原理:在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。二、printf串口打印实现1.使用LL库添加下面的fputc重定义代码://重映射fputc函数,此函数为多个输出函数的基础函数int fputc(int ch, FILE *f){ while (USART_GetFlagStatus(USART1,原创 2021-05-21 21:27:17 · 2726 阅读 · 1 评论 -
STM32使用HAL库,多串口接收一段时间后程序卡死
背景拟实现接收两个串口的数据,将两个串口的数据进行整合通过一个串口发送出去,功能很简单,但在实操中却遇到了接收一段时间后程序就卡死的现象解决方法在串口接收中断时开启接收错误中断void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(huart->Instance == USART2) { HAL_UART_Transmit(&huart1, UART2_Rxbuf, 1, 1); // 把收到的字节原样转载 2021-05-14 14:22:10 · 2564 阅读 · 0 评论 -
记一次更换大容量STM32芯片的Flash读写异常问题
记一次更换大容量STM32芯片后Flash读写异常问题背景由于项目的更新,主控芯片由RBT6更换为RCT6,系统的参数修改保存在片上Flash中,更换新板子之后,调试发现系统参数读取错乱;对系统参数进行修改,重新保存,发现一部分数据正确,一部分数据错误,多次尝试,现象一致;读取Flash的数据,查看对应地址保存的数据,是修改后保存的值;解决方法很容易定位,问题的关键在对Flash的操作;而两个板子最根本的变化在于更换了芯片;查阅资料得知,STM32F103RCT6的Flash一页为2kb;原创 2021-02-18 20:26:26 · 1876 阅读 · 0 评论 -
ST-Link能检测到单片机并且时有时无,无法烧录程序
背景自己做了一块板子,是基于STM32L0的,预留了SWD模式的调试接口。硬件搭好之后,准备烧录一段测试程序检查一下硬件,却始终无法烧录,弹窗Connot connect device 或者 internal command error,网上查找资料无果,困扰了好长时间。ST-Link是正版的,我也是第一次用ST-Link,之前一直用的J-Link。连了4条线VCC、GND、SWDIO、SWCLK。检查了连接与各项设置之后确认没有问题,于是改用J-Link烧录一下试试,发现烧录成功,这证明板子没有问题。原创 2020-11-09 21:36:54 · 3695 阅读 · 8 评论 -
KEIL编译报错 Error: L6220E: Load region LR_IROM1 size (67044 bytes) exceeds limit (65536 bytes)...
背景:之前在做的一个项目使用的是64K内存的芯片,随着功能的更新,空间也渐渐不够用了,于是重新设计了板子,换了128K的芯片,并且keil工程的芯片类型也相对应做更改,一段时间之后,添加代码再编译出现了如下的错误:错误原因:实际上还是超内存了解决办法:第一步128K的芯片,下图红框处应该是图上所示的数据,有些版本的KEIL会在你更换Device时自动更改这个地方;而有些版本需要手动修改。第二步还有一个文件需要统一修改,点击Target - Linker - Edit…,会打开 STM32原创 2020-08-10 21:50:09 · 7100 阅读 · 1 评论 -
STM32 关闭所有中断
STM32 关闭所有中断如题,关闭或开启所有中断;代码如下:__set_PRIMASK(1);//关总中断__set_PRIMASK(0);//开总中断原创 2020-08-10 21:17:02 · 10778 阅读 · 2 评论 -
STM32F1 软件实现系统复位与检测复位标志位
STM32 软件实现系统复位与检测复位标志位1.软件实现系统复位嵌入式开发中,通过代码在某种条件下,如程序发生异常,实现系统复位;代码如下:*((u32 *)0xE000ED0C) = 0x05fa0004; //实现系统复位2.检测复位标志位程序复位后重新运行,通过检测上次复位是什么情况导致的复位来执行不同的操作;if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) //上电复位{ //内容1}else if (RCC_Get原创 2020-07-18 19:22:57 · 2161 阅读 · 0 评论 -
STM32备份寄存器的配置与使用
STM32备份寄存器的配置与使用前言嵌入式系统设计中,用来存储系统运行过程中的数据有很多种方式,而使用STM32的备份寄存器可以实现对少量数据的频繁存储。因为这种方式时将数据存储在RAM中,掉电则数据丢失,所以需要使用备份电源为芯片供电;也由于是在RAM中,理论上可以无限次存取。配置首先需要添加stm32f10x_bkp.c文件和stm32f10x_pwr.c文件添加到工程的库文件FWLib当中;其次在 RCC_Configuration( ) 函数中添加以下配置代码; /* Ena原创 2020-05-30 13:44:25 · 4284 阅读 · 1 评论 -
记录STM32开发中ADC配置代码都正确但一直无法读取的问题
问题背景前段时间接手了一个新的项目,用来调试的PCB板子是上一批人画的旧版。项目中间有使用到ADC读取外部电压的部分,当我调试到这一部分的时候发现,无论如何读到的数据都没有变化,并且ADC相关部分的代码检查了多遍也确定是没有错误的。。。正文查阅芯片的官方数据手册后,发现有这样一句话:再看看我所调试的PCB板子的原理图:很明显这里的 VREF+ 和 VREF- 没有连接,正确的原理图...原创 2020-05-04 17:27:19 · 3634 阅读 · 1 评论