STM32
单片机专区
Gemini_Lesl_Z
这个作者很懒,什么都没留下…
展开
-
串口DMA收发和485使能引脚使用的一些细节和问题。
项目一开始使用的串口都是以DMA加空闲中断的方式使用的,但是再和485的芯片使用的时候,遇到了一点问题。串口需要将使能引脚先置低,然后接受才有效。这个时候,发送数据,需要把使能引脚拉高,才能发送。但是由于DMA的机制,导致了数据还没有发完,就会把引脚又拉低了。这就出现了很多异常显现,比如,接收端引脚的数据会有很多干扰,再一次处罚DMA收的中断,实验中发现,由于这种情况的出现,接收端的内存里数据还存在,就会导致协议再一次解析,又触发一次发送,永远停不下来了。最后解决的方式是:接受用DMA的方式,发送就用.原创 2021-04-06 18:01:05 · 1829 阅读 · 0 评论 -
Hal关于串口重映射配置的顺序问题
平时用标准库配置串口的时候,没有太在意重映射这个问题。最近用hal库的时候,发现了一点问题。也是基于实验结果,说的结论,可能有更深层次的原因,没有深究。Hal库的重映射是放在配置IO的下面的,但是实际配置的时候,这样的顺序,会导致串口配置异常。后来尝试了用标准库的顺序配置,串口才正常。使用体验就是hal虽然大大方便了项目的 驱动配置,但是也需要有一些经验才会不踩坑。...原创 2021-04-06 17:52:11 · 1347 阅读 · 3 评论 -
BMP图片的填补细节和emwin的图片差别
最近在处理BMP的图片显示,关于BMP的文件数据头,就不多解释了。。网上随便找一下都是一大堆。我想记录一下bmp的补齐原则。关于这张图片,尺寸是这样的:38 * 25262 个字节里面的位图深度是1位单色使用emwin的图片,转换的图片是这样的。static GUI_CONST_STORAGE unsigned char acconvert1[] = {XXXXXXXX, XX...原创 2020-03-25 17:14:52 · 335 阅读 · 0 评论 -
程序结尾四个变量的意思
原创 2020-03-25 17:10:50 · 207 阅读 · 0 评论 -
关于ST公司的BootLoader流程的总结
最近在公司处理关于BootLoader的一些升级细节,使用了一个星期左右,使用了官方的flash down load的软件。当时看了A2602和AN3155有关于botlooder的描述,但是在编程的时候依旧遇到了很多问题了。比如用官方提供的代码,在升级程序完成的时候时无法得到read memory的反馈的if(HAL_UART_Transmit(&huart2, (uint8_t*...原创 2020-03-25 17:08:23 · 1159 阅读 · 2 评论 -
HTTP post 封装发送异常
出现这类异常的原因 现在遇到两种1、由于初始化的结构和定义不统一,导致了异常。2、sprintf是不安全的字符改写。用sprintfs增加长度比较安全。这里发生的原因是,由于字符串最后有一个’\0’ 如果看到的字符是9个,实际上有占用10个字节的空间。需要预留...原创 2020-03-25 17:07:22 · 304 阅读 · 0 评论 -
烧录程序时候,程序还未进main就死了
程序还未进main函数,在.s文件中就死了。导致debug无法调试。因为没有进main初始化,所以不是软件的原因,大部分是硬件的原因。后来查到原理图:Boot0 处于悬空状态。stm设置的BOOT要处于低位,才是从主系统flash进去。所以把boot拉低了。...原创 2020-03-25 17:04:35 · 479 阅读 · 0 评论 -
M3串口中断频繁进入ORE问题
在处理ORE问题时候,通常会判断开启ORE,如果溢出就清除中断,但是这确实扬汤止沸的方式,没有从根本上解决问题。所以我想记录一下这个扬汤止沸的方式和一些心得。ORE出现的原因是,当收到数据,RXNE被置位,收到数据。只有当RXNE被清之后,只能从位移寄存器转移到RDR寄存器,才能被读出来。如果RXN被置位,但是下一个数据已经到来。这时候就要产生ORE置位了。当遇到中断中有很多业务逻辑和...原创 2020-03-25 17:01:27 · 899 阅读 · 0 评论 -
STM32串口 断点调试 中断异常
使用了stm32L433 是M4的内核采用了中断接受数据的方式,正常处理的时候,都是正常的。但是当使用keii5 断点调试的时候。中断异常了,明明没有数据接受了,但是依旧出现不停的进入中断。调试的时候,看到ISR寄存器的OER位,正常的时候是reset的状态,一旦断点调试,就会出现溢出。使用的hal库。__HAL_UART_GET_IT(&huart2,UART_IT_ORE);使...原创 2020-03-25 16:59:46 · 1664 阅读 · 1 评论 -
F4和L4的一个区别 (CCM)
查看数据手册,可以看到关于CCM:F4是有CCM的L4是没有CCMCCM介绍:F4新加的一个特殊内部SRAM。64 KB CCM (内核耦合存储器)数据 RAM 不属于总线矩阵(只能通过 CPU 对其进行访问)。具体使用方式,因为项目最后没有用到,就没有查阅了。...原创 2020-03-25 16:56:57 · 1709 阅读 · 0 评论 -
(经验贴)关于串口的一些小记,硬件限制波特率
串口波特率显示接收数据异常当波特率在115200时候,会出现串口失效的现象查看示波器:波形失真发现没有到达3.3V 是无法被硬件识别的当波特率降到57600时候,效果可以被硬件识别。这边的测试数据是55开头因为55 二进制 是 01010101,是数据中变化最快的,如果这个数据都能被识别,就可以了。上拉电阻在串口的作用是:使得电压的变化更快,跟狗容易被识别。...原创 2020-03-25 16:50:28 · 1241 阅读 · 0 评论