
mcu
文章平均质量分 55
freemote
这个作者很懒,什么都没留下…
展开
-
GD32F4 LVD(低电压监测)功能使用
LVD的功能是检测VDD/VDDA供电电压是否低于低电压检测阈值,该阈值由电源控制寄存器(PMU_CTL)中的LVDT[2:0]位进行配置。LVD通过LVDEN置位使能,位于电源状态寄存器(PMU_CS)中的LVDF位表示低电压事件是否出现,该事件连接至EXTI的第16线,用户可以通过配置EXTI的第16线产生相应的中断。原创 2024-09-14 17:15:32 · 973 阅读 · 0 评论 -
折腾了一下Atmega64A(开发环境搭建+程序下载)
win10下Atmega64a开发环境和下载程序搭建原创 2023-12-13 08:00:00 · 1596 阅读 · 0 评论 -
CMSIS-RTOS2 RTX5移植到GD32L233
CMSIS-RTOS2 RTX5移植原创 2023-03-17 10:55:50 · 3730 阅读 · 4 评论 -
移植SFUD,驱动SPI FLASH ZD25WQ80
移植SFUD,万能SPI FLASH驱动原创 2022-12-30 08:41:24 · 1832 阅读 · 0 评论 -
聊聊首次使用航顺HK32F030C8T6的体验
hk32f030原创 2022-12-23 18:01:31 · 2958 阅读 · 2 评论 -
Letter shell移植到AT32WB415
Letter shell移植到mcu,通过串口命令行与单片机交互原创 2022-08-25 19:55:28 · 475 阅读 · 0 评论 -
硬件SPI与软件模拟SPI速率对比
1、前言本文使用AT32F425驱动RC522来测试SPI1的速率,关于RC522的详细代码操作可查帖子【GD32L233C-START评测】7、硬件SPI1驱动RC522。2、关于AT32F425的SPIAT32F425系列最多有3个spi,本文使用SPI1。3、SPI1的最大速率SPI1挂在APB2总线上,APB2总线的最大速率是96MHz;SPI的最大速率为fPCLK/2,即48Mhz。4、代码实现/*SPI1 : PA4/CS PA5/SCK原创 2022-07-26 13:40:01 · 9905 阅读 · 4 评论 -
N32L43x Flash读\写\擦除操作总结
N32L43x Flash读\写\擦除操作总结原创 2022-07-25 21:24:33 · 1106 阅读 · 0 评论 -
I2C波形分析
本文使用逻辑分析仪,抓取I2C波形,进而分析I2C信号。空闲电平:SCL和SDA都是高电平;起始信号:SCL高电平的时候,SDA从高拉低;结束信号:SCL高电平的时候,SDA从低拉高;ACK信号:在第9个时钟的时候,SDA为低电平;NACK信号:在第9个时钟的时候,SDA为高电平;第一个数据对应的二进制是01110001,转换成十六进制刚好是0x71,也说明I2C是以MSB传输的。...原创 2022-04-22 20:24:41 · 9192 阅读 · 1 评论 -
串口波形分析
本文使用逻辑分析仪,抓取串口波形,进而分析串口数据。串口配置为115200波特率,8个数据位,1个停止位,无校验方式。字符1的波形如下图:从图中可以看到8个数据位,但是在第1位之前和第8位之后也是属于字符1的波形,第1位之前的是起始位,最后一位是停止位,即就是:起始位是低电平,停止位是高电平,起始位之前和停止位之后都是高电平,也就说明串口空闲的时候是高电平,图中数据位对应的二进制是10001100,而字符1对应的二进制是00110001,可以发现两者刚好是相反的,这也说明了串口传输的时原创 2022-04-15 17:40:19 · 4030 阅读 · 0 评论 -
【开源】串口YMODEM实现IAP程序升级(附工程源码)
GD32串口 、YMODEM 、IAP升级原创 2022-01-14 14:09:59 · 10327 阅读 · 33 评论 -
字库芯片GT20L16S1Y使用记录
高通字库使用记录原创 2021-12-28 08:15:00 · 12402 阅读 · 12 评论 -
使用Jlink合并mcu的boot和app
使用Jlink合并boot和app原创 2021-12-24 08:15:00 · 1296 阅读 · 0 评论 -
GD32F303串口ISP方式下载程序
GD32F303系列串口ISP下载程序原创 2021-12-20 08:15:00 · 12484 阅读 · 3 评论 -
GD32F303使用Jlink 调试状态下可以运行,非调试状态下不能运行,原因排查
1、GD32启动模式在调试状态下,从ram中启动,因此猜测在非调试模式下,boot引脚设置不对。2、MicroLIB程序中如果使用了printf,就需要MicroLib的支持,在MDK中需要勾选Use MicroLib。查找之后,发现正是没有勾选MicroLIB的原因导致的,但是奇怪的是,在debug模式下,打印倒是正常的。...原创 2021-12-10 17:31:13 · 3134 阅读 · 3 评论 -
KEIL编译后程序的大小,Code、RO-data、RW-data、ZI-data的关系
MDK编译后显示:Program Size: Code=9748 RO-data=392 RW-data=20 ZI-data=1228首先要弄懂这几个分别是什么?Code:程序代码,存储在rom中;RO-data:只读数据,存储在rom中;RW-data:可读可写数据,既存储在ram中,也存储在rom中(RW-data已初始化的数据会存储在rom中,上电会从rom搬移至ram中);ZI-data:Zero Initialize,未初始化的数据,存储在rom中。因此程序占用rom大小=C原创 2021-11-23 22:16:00 · 3322 阅读 · 1 评论 -
排查矩阵按键丢键问题
背景按键板作为用户交互入口、板载LCD,与主板通过串口通讯。接手别人留下的代码,发现存在按键响应不到的问题。问题排查排查方向一:debug调试打断点,发现可以响应按键。排查方向二:主板与按键板通过排线链接,排线比较长换了短线,发现还是存在问题。排查方向三:通过示波器抓按键扫描抓按键发现,第一张图中11.2ms扫描一次按键,第二张图中会有一段时间没有在扫描按键,如图中的444ms,查看代码发现这一段时间,mcu在与主板通讯,刷新LCD等,消耗了太久的时间。解决办法在刷新LCD的时候,插原创 2021-10-20 14:27:10 · 507 阅读 · 0 评论 -
stm32与gd32启动时间对比
背景LCD1602的应用程序从stm32移植到gd32后,上电瞬间会显示黑条。因为应用层程序都是一样的,所以猜想是启动时间上区别。1、没有程序的时候:在单片机没有程序的情况下,上电后就会显示黑条,所以属于正常现象。查阅相关资料发现LCD1602默认的是启用一行,所以会上电的时候显示一行黑条。2、STM32、GD32上电启动到运行初始化LCD的时间分析:探头2抓取mcu 电源,探头3抓取GPIO电平(初始化LCD之前拉高GPIO电平)(1)stm32时间:可以看出,从上电启动到初始化LCD,原创 2021-10-20 13:36:04 · 2129 阅读 · 2 评论 -
RT-Thread线程最大优先级设置不当,引起的FinSH异常问题
问题现象:在把RT-Thread 3.1.5版本移植到GD32F150的时候出现了FinSH不能输入命令?程序配置:在rtconfig.h配置文件中,线程最大优先级设置为了8(即#define RT_THREAD_PRIORITY_MAX 8),而FinSH线程的优先级默认是21,因此导致FinSH异常。解决办法:将线程最大优先级(即RT_THREAD_PRIORITY_MAX的值)要大于或等于系统所有的线程的优先级。...原创 2021-10-20 11:24:53 · 1225 阅读 · 1 评论 -
RT-Thread移植到GD32F150系列MCU
1、下载RT-Thread Nano的源码,如下:https://www.rt-thread.org/page/download.html2、在工程目录下添加RT-Thread文件夹,如下:3、将下载的RT-Thread Nano的源码解压,然后拷贝到RT-Thread文件夹,如下:4、将内核代码添加到工程中,如下:5、将cpu相关代码添加到工程中,如下:GD32F130属于ARM cortex m3内核的,使用keil开发的,6、添加板级支持文件,如下:board.c文件中原创 2021-10-15 17:37:49 · 565 阅读 · 0 评论 -
STM8擦除方法
使用STVP烧录stm8,擦除选项一直为灰擦除方法:第一步:在OPTION BYTE里面,把ROP选项设为Read Out Protection ON,然后烧录(依次选择Program,Current tab);第二步:继续在OPTION BYTE里面,把ROP选项设为Read Out Protection OFF,然后烧录(依次选择Program,Current tab);第三步:读取flash,依次选择Read,Current tab,在PROGRAM MEMORY里面可以看到,数据原创 2021-01-13 22:38:29 · 4468 阅读 · 0 评论 -
STM8新建IAR工程
2016年的时候开发过stm8s003,当时用的是STVD开发的;时过两年,2018.12再次需要开发stm8,已经忘的差不多了,费尽周折,电脑的原因一直装不上STVD,只能选择IAR了,记流水账一篇,记录一下开发过程,防止下次又忘记。欢迎加入stm32/LoRa物联网:3043503121、准备标准库函数文件,官方的标准库函数为stsw-stm8069,解压后如...原创 2019-01-04 11:52:29 · 7002 阅读 · 2 评论 -
STM32F10x程序移植到GD32E10x
前言:两个芯片是Pin to Pin的,因此硬件基本不用修改,只需修改软件即可。1、开发化境IDE:IAR,MDK调试下载工具:stlink、jlink ob 、jlink均可2、数据类型定义在stm32早期的库中使用了u8,u16,u32等数据类型,需要在gd32e10x.h文件中定义u8,u16,u32等数据类型。3、时钟配置根据硬件设计,在system_gd32e10x.c里选择使用内部8M或者外部晶振,不同的外部晶振倍频系数不一样,倍频到120M。4、s.原创 2020-10-29 19:46:57 · 7724 阅读 · 0 评论 -
STM32f407程序移植到GD32F407
0、前言本文记录STM32f407程序移植到GD32F407的全过程,两个芯片是pin to pin,基本特性都是,最大168MHZ,1024k flash,192K sram,LQFP100封装。1、安装keil对gd32f407的支持包GigaDevice.GD32F4xx_DFP.2.0.0.pack2、对u8、u16、u32等数据类型的支持在gd32f4xx.h中定义3、时钟选择根据电路设计,外部使用8M,通过PLL到168M因此在sys_gd32f4xx.c文件中选择宏定义:(1原创 2021-08-20 09:17:11 · 15966 阅读 · 0 评论 -
STM32与LoRa低功耗调试总结
前言:物联网的大部分设备都是电池供电的,设备本身低功耗对延长设备使用至关重要,今天就实际调试总结聊一聊stm32的低功耗调试。1、stm32在运行状态下的功耗上图截图自stm32l15x手册,stm32l15x系列最大运行在32M;如果在最大频率下运行,那么mcu功耗是214uA*32=6848uA=6.8mA,如果还有外设,那么整个系统功耗可能会更多。因此,在调试功耗的时候,可以用上面的6.8mA当做一个参考,判断mcu有没有进入低功耗状态(stop,standby等)。2、对于没有使原创 2020-11-30 11:21:42 · 10105 阅读 · 0 评论 -
分析stm32f103x timer6用不了的原因?
最近在修改别人的代码,程序里面使用了timer7,因为要扩展一些功能,所以准备使用timer6,但是配置了后,发现timer6不能正常运行。查看stm32f10x手册,发现timer6和timer7都是通用定时器,用法也一样。分析原因,发现是启动文件用的不对。stm32f10x有多个启动文件,根据容量的不同,在使用的时候要选择不同的启动文件,有的启动文件里面没有TIM6_IRQHandler中断;例如在startup_stm32f10x_hd.s文件中,是支持的:但在star原创 2020-12-18 19:28:18 · 1393 阅读 · 0 评论