![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32F4
文章平均质量分 78
xMcMark
这个作者很懒,什么都没留下…
展开
-
STM32F4 IAP跳转地址设置
STM32F4系列内部flash的块非常大,前面4个16KB 第5个扇区64K,后面的几个128KB为应用程序。如下图:一般Bootload放在开头flash,后面跟着app程序。所以跳转地址一定要设置好,看扇区分布应该选用4000、8000、C000、10000等地址,一定要放在放在扇区的开头上 避免APP更新时擦除整个扇区时误把bootload所在的扇区擦除掉,造成bootload损坏。开始时没注意这个问题以为设置跳转地址只要是4的倍数就可以,造成APP只能更新一次,再次更新时直接死机,原因就是原创 2020-06-09 13:39:13 · 1667 阅读 · 0 评论 -
使用Cjson解析造成内存溢出的解决办法
最近使用cjson解析json数据,在使用过程中发现有很多网友说运行一段时间,会造成内存申请失败,死机等情况,我也遇到了内存申请失败的问题,后来发现了如下几个问题1.申请了内存没有释放 造成内存申请失败,下面记录下使用的注意问题(1)使用root = cJSON_Parse(text); //将文本转成json格式,次函数里面申请了一块内存给root 所以在最后要释放rootcJS...原创 2020-03-09 14:33:05 · 10634 阅读 · 4 评论 -
使用FATFS修改完文本在写进去
我想把一个文本内容读出来,修改完以后在写进去。测试已经可以读出来修改了,但是写进去的时候遇到了一些问题,开始的时候没有移动文件指针,写进去的数据在原文文件后面追加了。后来使用f_lseek(f_check,0);把指针移到最开始,然后在写进去,这次发现如果写的文件长度小于原来的文件长度,会造成原来的文件留下一点,没有完全覆盖。后来查看FATFS的文档发现了一个截断文件函数:FRESULT ...原创 2020-03-09 13:59:39 · 1533 阅读 · 0 评论 -
STM32F4 UART1 DMA收发的一些问题解决
早些时间写过一篇“STM32F4 UART1 DMA发送和接收不定长度数据”的博文。很多转载的都不注明出处的。后来就没再怎么用过F4的uart 也有朋友反映过会莫名的进接受完成中断,但是实际接受的数据量并没有达到设置的DMA接受长度,应该不会进DMA接收中断,我也没搞明白就不了了之了,可看这个链接:http://www.openedv.com/forum.php?mod=viewthread&a...原创 2019-04-21 15:58:05 · 3490 阅读 · 0 评论 -
stemwin 使用GUI_EndDialog切换页面死机的解决
最近学时使用emwin 在切换窗口时进入HardFault_Handler,后来发现在创建的窗口内没有处理WM_PAINT消息的操作,添加后在case内执行清屏,这样在切换界面时就不会发生死机。示意代码如下:static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int ...原创 2019-04-12 14:33:28 · 4426 阅读 · 0 评论 -
stemwin 实体键使用GUI_SendKeyMsg发送消息卡死的问题
解决移植单色屏时使用了实体键发送窗口处理消息时导致卡死。在操作实体键时发送对应的消息,用到最多的是GUI_SendKeyMsg(GUI_KEY_TAB,1); //制表键,可以用来切换焦点聚焦到不同的小工具上。期间操作按键发送TAB消息时发现总是进入HardFault_Handler,但是放在emwin窗口定时里面发送TAB消息就不会进入HardFault_Handler。怀疑和KEY任务有关...原创 2019-03-29 20:29:35 · 2623 阅读 · 0 评论 -
STM32F4 定义ucosii到CCM
STM32F4内壁192KRAM 但是很是128k普通RAM和64K CCM RAM,CCM只能内核调用,本来想着192KRAM挺好,结果仔细看悲剧了。但是也不能浪费,可以尝试使用它,把UCOS内核数据放到CCM。网上搜索到一个FreeRTOS的照着他的自己弄了弄。http://www.stmcu.org/module/forum/thread-604814-1-1.html再次感谢该网友。。原创 2016-05-31 13:51:38 · 5017 阅读 · 0 评论 -
STM32F4 UART1 DMA发送和接收不定长度数据
STM32F4 串口收发使用DMA还是很方便的。但是配置DMA时需要配置数据长度,这一点对于发送来说可以预估计自己发送的长度来配置DMA发送数据长度,但是对于接收不是很好解决,因为如果使用DMA接收中断是要配置的数据长度减到0才能出发中断。但是我们无法判断接受数据的长度,导致无法判断数据接收完成。网上有提出的解决方法是用定时器固定周期的读DMA接收的长度来判断是否接收完成,也有使用UART的空闲中原创 2016-05-26 09:08:13 · 23761 阅读 · 7 评论 -
STM32F4时钟配置
看了下时钟树按照http://blog.csdn.net/louyangyang91/article/details/51374924这个博文配置了,结果发现UART波特率不对,但是MOC1\2都是正常输出(168M/5分频输出),蒙了很久才发现USART_Init(USART1, &USART_InitStructure); 这个函数内部会调用RCC_GetClocksFreq(&RCC_C原创 2016-05-31 09:04:46 · 4679 阅读 · 0 评论 -
STM32F4 UART DMA初始化
F4的片子内部DMA初始化和F103的有很大区别,在这里引入了数据流(Stream),2个DMA共16的数据流(每个控制器8个),每个数据流则可已处理多达8个通道的数据,每个通道都有一个仲裁器处理DMA请求的优先级。下面贴出DMA请求映射事例在DMA2中可以看出UART1的发送是数据流7的第4通道,接收是数据流5的第4通道。所以在配置DMA时要注意选择对应的数据流然后配置对应的通道,最原创 2016-05-26 09:48:26 · 2559 阅读 · 0 评论 -
STM32F407时钟树
最近学习下STM32F4的芯片,首先还是要了解时钟系统。库函数调用函数static void SetSysClock(void)初始化时钟。依次初始化HCLK、 PCLK2、PCLK1、PLL。最后打开PLLstatic void SetSysClock(void){/*************************************************************原创 2016-05-11 15:28:47 · 4754 阅读 · 0 评论