![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM
文章平均质量分 85
ARM
柒妖71
不破不立
展开
-
WINBOND/华邦 W25Qxxx调试笔记
项目中原来使用华邦W25Q128芯片,后因为flash容量续替换为W25Q256芯片。Bootloader使用自己分装的对W25Q128驱动程序,APP程序使用armink提供。项目程序放在stm32片内flash中,片外norflash中存放OTA的固件和更新标志位。Bootloader上电读取flash中更新标志位位和校验数据都正常,APP读取flash中工作参数也都正常。原创 2023-03-13 00:41:17 · 950 阅读 · 0 评论 -
Vscode EIDE+Cortex Debug搭建STM32开发仿真环境
Vscode EIDE+Cortex Debug编译下载仿真构建STM32开发环境原创 2022-04-30 16:24:45 · 9083 阅读 · 19 评论 -
结构体------对齐与压缩(#pragma, __packed)
结构体对齐原则:压缩结构体的方法_packedpacked属性的主要目的是让编译器更紧凑地使用内存。当它用于变量时,告诉编译器该变量应该有尽可能小的对齐,也就是1字节对齐。当它用于结构体时 ,相当于给该结构体的每个成员加上了packed属性,这时该结构体将占用尽可能少的内存。#program pack()aligned...原创 2022-04-25 22:26:10 · 2241 阅读 · 0 评论 -
STM32 IAP固件升级 认知篇
环境stm32f103zet6MDK 5.28芯片Flash大小我用的是stm32f103zet6属于高容量产品,flash大小512KB,每个Page2KB大小,一共256页(这个可以根据自己的芯片去ST官网查询文档),如下图所示:我们这边对这个flash再做个划分(需要根据固件大小和bootloader程序大小划分,bootloader程序出厂就不会改变了,所以要预留考虑好分区是否放的下程序):bootloader大小是前128KB,从0x08000000~0x0801FFFFAP原创 2022-04-17 22:42:35 · 1528 阅读 · 2 评论 -
STM32的堆和栈
STM32的堆和栈原创 2022-04-17 14:34:32 · 4352 阅读 · 0 评论 -
Ymodem下载协议
背景这里的Ymodem是YMODEM-1K(除此还有Ymodem-g(没有CRC校验,不常用)),经常使用在IAP固件升级中。是X-modem协议升级过来的,每一包数据可以达到1024字节,比X-modem高效很多。这个协议包括了文件的识别、传送的起止时间、错误的判断与纠正等内容,所以也可以较好的保正固件在传输的过程中的正确性。帧头SOH 01H(modem 128数据帧头)STX 02H(Ymodem 1024数据帧头)EOT 04H(发送结束)ACK 06H(应答)NAK 15H(非应答原创 2022-04-14 23:00:11 · 705 阅读 · 3 评论 -
vscode搭建stm32开发环境
使用vscode代替keil5作为ARM开发环境WHYARM开发环境众多,比较常用的有keil、IAR、STM32CubeIDE、RT-Thread Studio等等。本人之前使用较多的是KEIL5,原因大概就是大学用的KEILC51对KEIL的界面比较熟悉上手难度低,加上项目基本都是windows环境上的开发,故一直使用KEIL。但KEIL被人诟病的语法补全功能、没有跨平台能力和界面不美观,都是其缺点。(虽然keil stutio正在研发中,预计明年初会出来,界面有了很大的改观。)vscode这个软原创 2021-08-24 22:41:25 · 1451 阅读 · 0 评论 -
RT1052 LPSPI时钟配置
时钟配置原创 2021-09-06 21:50:07 · 1078 阅读 · 0 评论 -
Jlink-commander查找程序跑死
问题现象写了个测试程序,运行2小时后出现程序陷入死循环。设备已经死机。利用没有复位的剩余价值减少代码review的范围,基础介绍堆栈指针R13(SP)当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。连接寄存器R14(LR)每种模式下r14都有自身版组,它有两个特殊功能:保存子程序返回地址。当异常发生时,异常模式的r14用来保存异常返回地址,将r14如栈可以处理嵌套中断。程序计数寄存器R15PC 指向当前的原创 2021-08-27 10:43:09 · 3341 阅读 · 1 评论 -
读24cxx EEPROM
读写EEPROMEPPROM使用的是ST的M24C64芯片,MCU使用的是NXP的RT1051芯片,所以以下代码用的是NXP提供的fsl库和STM32的库略有不同。IIC初始化使用单片机硬件IIC接口,只需要配置时钟,引脚,设置波特率,其他获取默认设置就可以使用了。若芯片没有接到单片机的IIC接口用GPIO模拟IIC时序也可以实现功能,但是需要在对应时序加临界区保护。IIC时序使用硬件IIC可以跳过本部分内容。开始结束时序IIC开始时序和结束时序如图1所示:图1 IIC开始和结束符开始时原创 2021-06-07 00:20:45 · 1081 阅读 · 5 评论 -
STM32F103 SPI(踩坑日记)
STM32F103 SPI 笔记原创 2022-01-20 17:30:10 · 12350 阅读 · 2 评论