stm32
乄小小胖
叁元一只,拾元三只,竹鼠不卖,小胖最圆!
展开
-
将U16类型转换成u32,float,u8字符串
此文章实在modbus数据格式转换上所做的修改,不仅可以用于保持寄存器,也可以用去其他自定义的u16类型的数组common.h 头文件#ifndef __COMMON_H#define __COMMON_H#include "sys.h"/*浮点数与IEEE754格式转换*/typedef union { float f_Buf; //小数 u8 uc_Buf[4]; //u8,用于存放IEEE原创 2021-10-18 17:58:40 · 7279 阅读 · 0 评论 -
stm32 adc dma多通道采样 数据错位的解决方法
void Read_ADC_All(void){ u8 Number,t; u32 sum; //完成一次DMA传输,数据大小Sample_Times*Channel_Num DMA_SetCurrDataCounter(DMA1_Channel1,Sample_Times*Channel_Num); //设置DMA的传送数量为Sample_Times*Channel_Num DMA_Cmd(DMA1_Channel1,ENABLE);//使能DMA通道1 ADC_Cmd(ADC1,原创 2021-10-15 12:14:07 · 7277 阅读 · 0 评论 -
KEIL5软件仿真出现*** error 65: access violation at 0xE0001004 : no ‘read‘ permission的解决方法
故障图:解决方法:第一步:设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103ZE”,用于设置支持STM32F103ZE的软硬件仿真。第二步:在工程下新建一个debug.ini文件,在文件中写入map 0x40000000, 0x40007FFF read write // APB1map 0x40010000, 0x400157FF read write // APB2map 0x40020000, 0原创 2021-10-15 12:08:48 · 6306 阅读 · 3 评论 -
Modbus通信时USART中断导致程序死机的原因
https://www.cnblogs.com/citycomputing/p/6139456.html 多个中断在运行的情况下,比如串口中断的任务优先级比较低,当高优先级中断执行频率过高的情况下,串口中断内的数据接收处理就会很慢,导致接收速度和处理速度不一致,从而造成ORE(溢出错误中断)。 在RXNE=1 的的条件下(也就是上次数据还没有读走),串口接收寄存器又接收好了一个字节的数据并准备往RDR 寄存器去转移的时候,会由硬件将ORE( 溢出错误)置1。溢出错误发生后就无脑中断,任务就得不到运行原创 2021-09-28 15:54:18 · 4214 阅读 · 1 评论 -
对于威纶通MT8071ip与正点原子stm32f103的modbus通信,如何接线和配置
1、威纶通与正点原子stm32f103的接线关系:威纶通的针脚1接stm32f103开发板的RS485的A端口,针脚2接RS485的B端口。2、如果是威纶通接usb转串口485的接口,那就是针脚1接RS485的R+,针脚2接RS485的R-。3、同理可得,如果是stm32f103与usb转串口的485的接头,用电脑当做主机调试程序,则是开发板的A端口接R+,B端口接R-。下面是接线图,我是直接把3者全部都接起来了,方便调试,万一哪个坏了呢。。。把usb转RS485串口线的usb接头插上电脑,即可原创 2021-06-18 18:05:52 · 8269 阅读 · 6 评论 -
keil的错误: Error: Encountered an improper argument 的解决方法
此方法不一定大家都可以用,不过对于我来说还是挺靠谱的。就是把debug时未关闭的断点关掉就可以了1、进入debug2、选择Debug-> Breakpoints3、删除所有断点1、Keil Debug模式下可以通过以下两种方法查看和管理断点。在Command Window中输入BL查看断点,输入BK移除断点,更多命令参考http://www.keil.com/support/man/docs/uv4cl/uv4cl_debug_commands.htm2、通过Debug-> Br转载 2021-06-04 16:08:48 · 6221 阅读 · 1 评论 -
关于正点原子的USART重定向printf出现错误的解决方法
一直以来都是拿正点原子的代码来做学习,一直不喜欢用printf重定向通过串口打印数据,最近又重新要移植文件系统,结果又回去加上了usart这个文件,结果一加上就出错,以前也是出错,当时就把这个文件给去掉了。代码写多了之后,现在发现正点原子的东西也不是那么靠谱。对于这个报错,L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced。在网上找了个解决办法,在此记录下来#if 1原创 2021-06-01 09:56:13 · 1928 阅读 · 0 评论 -
对于stm32F103芯片读AT24C512得到的数据全是0xFF的解决办法
对于stm32F103芯片读AT24C512得到的数据全是0xFF的解决办法由于项目需要,将正点原子开发板的at24c02换成了at24c512,结果读取数据全是0xFF,经过网上的资料发现是读的驱动程序有一处出现了问题,再此记录下来。未修改驱动代码之前读取结果:只需要将发送高地址后的**IIC_Wait_Ack();**注释即可u8 AT24CXX_ReadOneByte(u16 ReadAddr){ u8 temp=0;原创 2021-05-22 10:23:05 · 3387 阅读 · 2 评论 -
modbus协议通信时浮点数如何发送和接收处理的解决办法
modbus协议通信时浮点数如何发送和接收处理的解决办法 在本次做项目的时候,发现需要威纶通屏幕与stm32芯片采用modbus通信,很多时候需要处理float小数。最开始一直在纠结大小端的问题,坑了一天,理出了下面的解决办法。 注意:主机发送给从机的小数是以32位的形式发送的,所以会占用2个保持寄存器。并且本次项目的威纶通屏幕作为主机时,是以小端形式发送数据,与stm32f103芯片一致,此处大小端问题我不在详细说明(主要是自己太菜了,太懒了,画图来说明很耽误时间)一、如何将保持寄存器中存放的原创 2021-04-07 11:11:04 · 20760 阅读 · 1 评论 -
关于stm32移植FreeRTOS后编译出现内存不足的原因
今天在学习移植freeRTOS的时候,出现了一大推内存不足的错误:linking……\OBJ\TEST.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss).…\OBJ\TEST.axf: Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_h原创 2021-01-11 16:27:35 · 6562 阅读 · 0 评论 -
STM32存储器映射
**STM32存储器映射**1、Cortex-M3存储器映射CM3的地址空间有4G,但它只对这4G空间作了预先的定义,把4G空间分成8个块,每块大小为512M,并指出各段该分给哪些设备。具体的实现由芯片厂商决定,厂商可以设计出具有自己特色的产品。下图是CM3的存储器映射图(来自CM3权威指南)。1.1、 stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不...转载 2020-12-10 12:01:57 · 3098 阅读 · 0 评论