MCU
文章平均质量分 59
qlexcel
共同学习,一起交流,天天进步!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
stm32h7时钟配置
通过HAL_RCC_OscConfig函数来使能和配置时钟源。比如下面代码用于配置HSI48、HSE下面代码用于配置LSE。原创 2025-10-27 15:00:12 · 482 阅读 · 0 评论 -
TIM定时器脉冲计数方法
方法适用频率CPU占用率代码复杂度适用场景EXTI中断<10kHz高低低频信号(按键、简单计数)输入捕获<1MHz中中需要同时测频/脉宽的场合定时器ETR>1MHz极低高高频脉冲。原创 2025-10-19 18:07:48 · 578 阅读 · 0 评论 -
GD32F10x 系列移植到 GD32F30x 系列
GD32F30x 和 GD32F10x 的 SPI/I2S 模块差异性主要表现在 GD32F30x 支持 SPI TI 模式、SPI NSS 脉冲模式和 SPI 四线功能(只有 SPI0),其中 SPI 的四线模式是用于控制四线 SPI Flash 外设,此模式下,数据传输速率是普通模式下的 4 倍。GD32F10x 与 GD32F30x 在外设上都是兼容的,但 GD32F30x 作为更高级的 MCU,较GD32F10x 在很多外设上增加了部分功能,用户可根据以下罗列出的外设差异性选择是否使用这些功能。原创 2025-09-11 17:42:51 · 1312 阅读 · 0 评论 -
MCU上电到运行的全过程
硬件触发阶段:上电→复位电路检测电压→给CPU发复位信号→CPU恢复默认状态;模式选择与引导阶段:CPU检测启动模式引脚→确定程序存储器→读取向量表→跳转到复位中断服务程序;软件初始化阶段:初始化RAM、堆栈、时钟、关键外设→跳转到main函数→执行用户程序。原创 2025-09-07 10:10:58 · 1925 阅读 · 0 评论 -
STM32H7的PA0_C、PA1_C、PC2_C、PC3_C的使用
Pxy 和 Pxy_C 引脚之间有模拟开关。原创 2025-09-05 15:13:07 · 723 阅读 · 0 评论 -
从 Arm Compiler 5 迁移到 Arm Compiler 6
注意ARM Compiler 5的-O0实际上是有优化的,所以ARM Compiler 6的-O1级别与ARM Compiler 5的-O0级别最为相似,都可以获取良好的调试体验,在调试阶段可以选用。修改lwip协议栈的cc.h文件,因为lwip使用到了编译器的扩展语言,比如取消结构体的对齐优化、指定变量对齐方式等,这些扩展语言 ARM Compiler 5 和 ARM Compiler 6 并不相同。防止ARM Compiler 6在-O0、-O1级别设置下,链接时出现未定义符号的错误。原创 2025-09-02 16:18:34 · 1248 阅读 · 0 评论 -
GD32F103C8T6的PB2无法输出高电平
当PB1设置成IPU, IPD, AF_PP, AF_OD四种模式的时候,PB2不受控。为了正常使用PB2,PB1必须配置成OUT_PP, AIN,FLOATING;原创 2025-08-24 18:53:31 · 631 阅读 · 0 评论 -
ST32移植到GD32、ST32和GD32的差异
GD32F1系列移植指南.pdf在V3.x 的库,启动时间宏定义在xxx32f10x.h头文件中;在 V3.0 以 前 的 库 , 其 启 动 时 间 宏 定 义 在 xxx32f10x_rcc.c中 (HSEStartUp_TimeOut);修改前:修改后:修改原因:GD和STM32的晶振部分电路设计有一定的差异,两者对外部高速晶振的参数要求也不一样,修改HSE_STARTUP_TIMEOUT宏定义可以保证晶振正常起振。当然你会在应用中发现有一些应用不修改也能照常跑,原创 2025-08-24 18:49:40 · 918 阅读 · 0 评论 -
jlink报警The connected probe appears to be a J-Link clone、the connected j-link is defective
使用便宜的j-link配高版本的驱动可能会遇到下面的报警。把驱动的版本降下来就可以解决,比如降到6.64。原创 2025-08-21 12:28:23 · 722 阅读 · 0 评论 -
基于GD32 MCU的IAP差分升级方案
摘要:本文介绍了一种基于GD32 MCU的IAP差分升级方案,适用于通讯速率较低或对时间要求严格的嵌入式系统。该方案采用bsdiff+lzma差分算法,将升级包大小压缩至原文件的10%左右,显著提升传输效率。通过5个关键步骤完成差分包制作、传输、还原及验证,适用于智能表计、车载设备等领域。方案需MCU具备25KB以上RAM,并在GD32A503V-EVAL开发板上通过USART实现了完整演示。文中还提供了相关开源库资源及详细的实现流程说明。原创 2025-07-01 17:12:32 · 1497 阅读 · 0 评论 -
Keil程序下载失败各种原因与解决方法
摘要 调试过程中出现两种常见错误:1) CPU未停止导致无法读写寄存器,建议降低下载频率或设置为"under Reset"模式;2) 闪存校验失败,数据不匹配,可尝试全片擦除后再下载。这些错误通常与调试设置或闪存操作有关,需针对性调整参数。原创 2025-05-25 12:44:44 · 664 阅读 · 0 评论 -
GD32H7系列区别,与GD32F470区别
GD32H7系列发布很久了,但是因为ST的H7系列价格一直很低,所以GD32H7一直不温不火。但是因为全球局势不稳定,ST不知道会不会出问题,所以今天还是来研究下GD32的。原创 2025-04-09 11:58:29 · 1980 阅读 · 0 评论 -
not a genuine st device abort connection报警
检查下单片机是不是ST的。我是使用ST link V2给GD32下载程序时遇到的,点击确定后可以成功下载程序和仿真。顾名思义,报警内容是:不是真正的ST设备,中止连接。keil下载程序遇到。原创 2025-03-06 21:32:03 · 864 阅读 · 0 评论 -
如何使用JLINK连接雅特力MCU
要注意选择keil正在使用的jink版本,比如我自己安装了3个版本的jink,但是我keil正在使用7.56版本,因此选择V756版本的路径。运行软件,选择jink安装的路径,然后点start即可,出现successful代表成功。keil正在使用7.56版本。需要上官网下载支持包。原创 2025-02-09 23:16:18 · 692 阅读 · 0 评论 -
GD32的SPI程序读写程序,SPI特性研究
先等待发送buf变空,然后再把要发送的数据装入发送buf。接着等待接收buf有数据,然后把接收buf中的数据读出来。当然也可以设置帧长度为12位,读写两次,但是这样读回来的数据就需要移位处理。能够知道这个过程需要24位,因此SPI的的帧长度设置为8位,然后读写3次。spi_i2s_data_receive 读取当前字节MISO引脚的波形。不能因为前面两个字节只发送数据,不需要接收数据,就把后面两行删掉!看到波形,最后一个字节还没有发送完,CS就拉高了。如果帧长度设置为16位,读写两次就有32位了。原创 2025-01-26 15:47:08 · 1214 阅读 · 0 评论 -
STM32的ADC工作模式
STM32的ADC模式我们一般用。原创 2025-01-23 22:09:15 · 2216 阅读 · 0 评论 -
CAN总线波形中最后一位电平偏高或ACK电平偏高问题分析
在CAN总线网络中,当一帧报文被各个节点接收时,在ACK阶段,多个CAN节点同时响应(都发显性),流过终端电阻的电流被各个CAN节点均分,那么平均到每个节点的电流就减小了,如下图所示,VDH、VDL的压降也减小,相应CANH-CANL的差分电压就增大了,即ACK应答电平会出现偏高的现象。按照标准,在总线输出为显性时,CANH=3.5V,CANL=1.5V,差分分电平:CANH-CANL=2V,总线网络电阻为60欧,流经终端电阻的电流约为33mA(2V/60欧);实际上这是正常的现象,最后一位是ACK位。原创 2025-01-01 22:39:39 · 1580 阅读 · 0 评论 -
Keil5把变量的数据导出,可视化
a[idx]是你想导出数组的名字,idx是你想导出数组的大小,idx不要超过你定义数组的大小,否则会出错。打开Debug里面的Function Editor (Open Ini File)…然后在Command下面的框中输入showdata(),然后点击回车。数组里面的数据就保存在你和你工程文件对应的地址下。把想要导出变量的数据存入数组中。然后点击Compile。点击data.log。转载 2023-12-16 11:36:50 · 3341 阅读 · 0 评论 -
使用fromelf把axf文件转换成elf格式
fromelf -h即可打印出帮助信息。原创 2023-01-02 16:57:13 · 4012 阅读 · 0 评论 -
GD32读保护解除
开启读保护后,jflash 可成功连接,但是什么也做不了。但是通过 Jlink Commander 是可以读写其寄存器的:最开始两个字节不是A5 5A,表示读保护开启。原创 2022-11-30 16:42:01 · 5282 阅读 · 1 评论 -
STM32\GD32把程序加载到SDRAM的运行方法
1、直接跳转到SDRAM中执行代码是不行的,因为SDRAM的地址默认是不能执行代码的,需要配置下MPU才行。如果程序太大,可以考虑使用IAP+APP的方式,首先通过IAP把APP加载到SDRAM中,然后跳转到APP中运行。2、跳转到APP时,代码就已经在SDRAM中运行,因此在APP中配置时钟和SDRAM初始化要慎重,这会导致SDRAM运行不正常,单片机直接 HardFault_Handler。配置MPU的方法参考:https://www.armbbs.cn/forum.php?原创 2022-10-29 22:24:35 · 3309 阅读 · 0 评论 -
SEGGER调试利器RTT,替代串口,高速数据上传
下载RTT代码,地址:在工程目录里面新建一个 SEEGER 文件夹,将 RTT 组件内容全都添加进去,添加的内容把RTT 文件夹中的2个c文件添加到 MDK 工程添加RTT文件夹的路径到工程移植完成!原创 2022-09-01 00:10:48 · 9790 阅读 · 1 评论 -
ESP32-PICO-D4的使用
特点尺寸仅为 (7.000±0.100) mm × (7.000±0.100) mm × (0.940±0.100) mm集成1 个 4 MB 串行外围设备接口 (SPI) flash集成 2.4 GHz Wi-Fi 和蓝牙双模的单芯片方案,采用台积电(TSMC) 超低功耗的 40 纳米工艺已将晶振、 flash、滤波电容、 RF 匹配链路等所有外围器件无缝集成进封装内,不再需要外围元器件即可工作管脚嵌入式 flash 连接至 VDD_SDIO(26脚),由 VDD3P3_RTC原创 2021-12-28 15:14:02 · 18334 阅读 · 2 评论 -
jlink的SWD与JTAG下载模式的对应接线方法
jtag模式接线第1脚(VDD)第3脚(TRST对应stm32的PB4)第5脚(TDI对应stm32的PA15)第7脚(TMS/SWDIO对应stm32的PA13)第9脚(TCK/SWCLK对应stm32的PA14)第13脚(TDO\SWO对应stm32的PB3)第15脚(RESET对应stm32的NRST)第4.6.8.10.12.14.16.18.20中的任意一个脚(地脚)。sw模式下载接线第1脚(VDD)第7脚(TMS/SWDIO对应stm32的PA13)第9脚(TCK/SW转载 2021-10-15 16:08:10 · 4010 阅读 · 0 评论 -
N76E003介绍与开发资料获取
介绍N76E003 为新唐高速 1T 8051 微控制器系列产品,提供 18 KB Flash ROM、可配置Data Flash与高容量1 KB SRAM ,支持2.4V 至 5.5V 宽工作电压与 - 40 ℃ 至105 ℃ 工作温度,并具备高抗干扰能力 7 kV ESD/4 kV EFT。N76E003 在20 pin封装下提供高达18根I/O脚位;周边包含双串口、 SPI 、 I²C 、6通道 PWM 输出;内建优于同类产品之 < 2 % 误差之高精确度16 MHz RC晶振与高分辨率8原创 2021-09-22 16:49:11 · 1118 阅读 · 0 评论 -
BMP格式详解
//BMP信息头typedef __packed struct{ uint32_t biSize ; //BITMAPINFOHEADER结构所需要的字数。 long biWidth ; //图象的宽度,以象素为单位 long biHeight ; //图象的高度,以象素为单位 uint16_t biPlanes ; //为目标设备说明位面数,其值将总是被设为1 uint16_t biBitCoun原创 2021-09-13 11:58:08 · 10893 阅读 · 0 评论 -
GD32F103内部Flash做虚拟U盘
直接使用官方例程,有如下注意点:1、USB的时钟是48MHz,需要根据自己的系统主频来分频。否则时钟频率不对,USB会枚举失败,电脑提示设备描述符获取失败。在如下文件和位置设置宏定义来选择系统主频。原创 2021-08-21 23:10:24 · 2674 阅读 · 1 评论 -
使用MLX90640自制红外热像仪(三):图像插值、图像彩色编码
经过上一节,已经把MLX90640的32x24个像素点读出来了,可是使用32x24直接显示在屏幕上,显示区域显示太小了,于是就需要对图像就行放大。原创 2021-08-12 21:42:31 · 10521 阅读 · 2 评论 -
使用MLX90640自制红外热像仪(二):API函数的使用
前面一篇文章介绍了MLX90640的相关信息和API库的移植,接下来介绍一下API库中的函数,和使用方法。 首先给出API函数的调用顺序,再对每个用到的API函数做说明:#define FPS2HZ 0x02#define FPS4HZ 0x03#define FPS8HZ 0x04#define FPS16HZ 0x05#define FPS32HZ 0x06#define MLX90640_ADDR 0x33#define RefreshRate F原创 2021-08-12 21:41:42 · 8496 阅读 · 13 评论 -
使用MLX90640自制红外热像仪(一):MLX90640介绍与API库移植
平时工作的时候会遇到如下场景:新焊接好的板子,通电后发现电流异常,需要看下板子上哪里发热异常。需要监控某个器件(比如三极管、MOS)的温度,以防过热烧掉。测量温升。 因此需要一个红外热像仪,可是网上看了一下都要2000左右了,虽然分辨率很高,可是我并不需要那么好的性能,于是干脆自己做一个。AMG8833的像素点是8x8的,感觉太低了,于是选用了32x24像素点的MLX90640。MLX90640介绍特性和优点小尺寸,低功耗, 32*24 像素红外阵列方便集成标准的 TO39 封原创 2021-08-12 21:39:37 · 38961 阅读 · 23 评论 -
使用MLX90640自制红外热像仪(四):stm32f103c8t6刷320x240分辨率屏的时间测试
72M主频的stm32f103c8t6刷TFT,全屏一直刷新测试硬件连接:/******************************* ILI9341 显示屏8080通讯引脚定义 ***************************//******控制信号线******///片选#define ILI9341_CS_CLK RCC_APB2Periph_GPIOA #define ILI9341_CS_PORT原创 2021-08-12 21:22:24 · 4973 阅读 · 1 评论 -
写个测试程序测试下,单片机使用浮点型数效率有多低
int main(void){ float data1; data1=0.123; data1+=0.456; while(1) { data1+=0.456; }} 25: data1=0.123; 0x08000648 4C0D LDR r4,[pc,#52] ; @0x08000680 26: data1+=0.456; 0x0800064A 4620 MOV r0,r40x080原创 2021-08-12 20:59:43 · 1560 阅读 · 0 评论 -
Keil5报错:error: more than one instance overload function “xx“ has C linkage
转自:https://blog.youkuaiyun.com/malloc_luo/article/details/104437926用Keil编写C、C++混编程序碰到了这个问题#ifdef __cplusplusextern "C"{#endif /*__cplusplus*///overloadvoid foo(int ,int );void foo(float );#ifdef __cplusplus}#endif /*__cplusplus*/编译之后报错:more than o转载 2021-08-01 10:47:10 · 1281 阅读 · 0 评论 -
C语言便于调试的宏定义 __FILE__、__FUNCTION__、__LINE__、__VA_ARGS__ 参数使用
__FILE__、__FUNCTION__、__LINE__ 这几个宏定义从名字就可以看出功能:__FILE__:宏在预编译时会替换成当前的源文件名,字符串类型。__FUNCTION__:宏在预编译时会替换成当前的函数名称,字符串类型。__LINE__ :宏在预编译时会替换成当前的行号,整型。__VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。 这几个宏定义,好像在VC6中无法使用,但是在Ke原创 2021-07-23 18:02:28 · 2080 阅读 · 3 评论 -
GD32的flash读保护和写保护
介绍 在实际发布的产品中,在GD32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部FLASH的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商会利用该方法山寨产品。为此,GD32芯片提供了多种方式保护内部FLASH的程序不被非法读取,但在默认情况”下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 GD32的选项字节地址和功能都跟STM32一样: 其中前面带“n”的是不带“n”的原创 2021-07-07 16:28:35 · 12205 阅读 · 2 评论 -
GD32的flash读、擦除、写操作
GD32的flash特征1、在flash的前256K字节空间内,CPU执行指令零等待;在此范围外,CPU读取指令存在较长延时;2、对于flash大于512KB(不包括等于512KB)的GD32F10x_CL和GD32F10x_XD,使用了两片闪存;前512KB容量在第一片闪存(bank0)中,后续的容量在第二片闪存(bank1)中;3、对于flash容量小于等于512KB的GD32F10x_CL和GD32F10x_HD,只使用了bank0;4、对 于 GD32F10x_MD , 闪 存 页 大 小原创 2021-07-06 23:19:48 · 27666 阅读 · 7 评论 -
Ymodem协议学习笔记
介绍 Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议。 Xmodem协议是最早的,支持传输128字节信息块。 Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点。它可以一次传输1024字节的信息块,同时还支持传输多个文件。 平常所说的Ymodem协议是指的Ymodem-1K,除此还有Ymodem-g(没有CRC校验,不常用)。 YModem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送使用CRC校验,保证数据传输的正确性。它每传输一个信原创 2021-06-30 12:04:01 · 2449 阅读 · 2 评论 -
GD32通用定时器、高级定时器PWM输出例程
通用定时器/*********************************************************************************************************** 函 数 名:PWMOut_LCD_BK_Init* 功能说明:TFT背光PWM初始化* 形 参:* 返 回 值:*****************************************************************************原创 2021-06-27 11:31:21 · 8998 阅读 · 3 评论 -
GD32定时器输入捕获例程
官方的例程/** \brief configure the GPIO ports \param[in] none \param[out] none \retval none */void gpio_configuration(void){ rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_AF); /*configure PA6 (TIMER2原创 2021-06-27 11:22:43 · 12795 阅读 · 7 评论 -
同构多核和异构多核简单介绍
多核处理器的由来 多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度。尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU。功率增加,散热问题也严重了,风冷已经不能解决问题了。 那么新技术必须出现-多核处理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一个商用多核处理器POWER4,2005年Intal和AMD原创 2021-06-17 13:13:59 · 13725 阅读 · 1 评论
分享