![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KEIL
大饼酱人
目前小白菜
展开
-
计算CRC16出现两次计算结果不同的问题
如上,算了一下当前代码的内存情况,按说不应该优化等级为-O0的时候溢出啊,但实际好像就是栈溢出了,把优化等级改为-O2或者把栈改为512B的时候,CRC计算那部分程序就正常了。传入CRC计算函数的原始数据和长度是一样的,但是前后两次计算的结果竟然不一样。开发环境是KEIL5,mcu是一个2K/4K SRAM的M0内核的单片机。这篇文章,提到了O0比O2使用的堆栈大的多,可能是这个原因吧。原创 2023-08-23 17:53:42 · 355 阅读 · 0 评论 -
一种管理KEIL工程输出文件的方法
脚本功能:将KEIL工程输出的BIN文件、HEX文件以软件版本号+hash值的方式重新命名后移动到指定文件夹。5、通过此脚本可以将输出文件名和软件版本号与提交记录关联起来,集中历史版本到同一文件夹,也方便管理和查找。1、脚本通过正则运算的方式从C源文件中获取到软件版本,若获取不到则自动切换为将脚本传参做为版本号。4、重命名之后将两个文件放入指定文件夹,同时在keil的Build Ouput中打印执行中的信息。3、在路径下查找编译后生成的BIN和HEX文件,将上述过程中采集到的信息组合后作为新名字。原创 2023-10-11 18:35:16 · 262 阅读 · 0 评论 -
一种针对嵌入式KEIL工程的版本管理和跟踪的python脚本
4、在指定路径下面新建C头文件version_info.h ,将上述采集到的信息按指定格式存入文件,同时在keil的Build Ouput中打印采集到的信息。脚本功能:跟踪当前软件版本、适配硬件版本、程序提交者、提交hash值、提交时间、文件的远端存储地址、远端分支、编译时间、编译主机名称、编译主机IP。1、在keil工程的前3级路径下面查找.git文件夹,.git文件夹是是git init后在当前目录生成的一个管理git仓库的文件夹。脚本使用方法:直接放置到keil的设置项下,简单可靠;原创 2023-10-10 17:52:47 · 480 阅读 · 0 评论 -
对keil输出的hex bin文件强制修改的python脚本
hex和bin的默认生成名字必须是rtthread,在Options - Output -Name of Executable中修改hex名字,在Options - User - After Build/Rebuild中修改bin名字。版本的名字在脚本执行的后面,例main.exe 1.0.3,如果没有输入脚本,自动在board.h中查找1.0.0格式的版本。脚本执行成功后会自动将生成的bin和hex文件命名为1.0.0.commit hash格式,并移动到./build/fw中。原创 2022-09-20 18:47:32 · 844 阅读 · 0 评论 -
从0使用keil5软件仿真调试GD32F305
搜集到的一些资料:RTT提供的F303的库GD32 BSP制作1RTT制作GD32系列BSP移植RTT到GD32兆易创新资料下载GD32标准库移植 (兆易创新官网只提供了标准库) 标准库点灯GD32芯片包下载 (和固件库包不一样)下载慢的话也可以官网中找GD32F30x AddOnGITHUB上的RTT和GD32的BSP制作GD32F305的例程其实看完上面这些也没必要继续向下看了·······下面是记录的一些技巧和过程细节一、新建工程及编译将下载下来的keil中的芯片包Gi原创 2022-05-29 09:45:49 · 6066 阅读 · 3 评论 -
使用keil5仿真时遇见的两个小问题
使用的keil 版本 V5.27.1.0(破解)问题1(未解决):通过添加path,引用了几个工程外部的文件,在main函数中应用了一个在外部文件中extern出来的全局变量,发现这个变量无法配置,但是将其返回原外部文件后,可以配置。问题2(已解决):一个公式,变量除以一个宏定义,宏定义内部是一个运算,例#define a 2#define b 20/a //正确为(20/a)int16_t c = 0, d = 69;c = d/b;结果c=1,原因是b没加括号,但是keil仿真时将原创 2022-04-22 19:21:15 · 572 阅读 · 0 评论 -
keil5 每次重启或者编译显示save changes to xxx.c
一般是由于cube生成文件时删除不完全造成的,比如使用了spi,又在cube里面去了,然后显示save changes to spi.c解决方法:去路径下查找xxx关键字,删除;打开工程 project-clean targets原创 2021-07-28 11:07:56 · 3496 阅读 · 0 评论 -
ArmClang: error: No license checking back-end registered with id Keil.mdkstd for feature Keil
可能原因是keil MDK版本太低,要5.26以上,或者ARM_Compiler V6.13下载32位的,不要下载64位的,MDK 许可证不支持 Arm Compiler 6.x 64-bit事实证明,MDK版本太低,32位也没用,下载了个5.27版本可以识别到32位的ARM_Compiler V6.13参考...原创 2020-07-30 10:16:02 · 1335 阅读 · 0 评论 -
KEIL5 ArmClang: error: Failed to check out a license.
keil5报错,二次安装的ARM_Compiler没有安装到软件根目录原创 2020-07-29 17:38:03 · 6543 阅读 · 6 评论 -
关于STM32的串口用DMA接收
原来都用CUBE直接生成使用DMA接收的串口接收程序,现在自己写调用函数才发现每个DMA通道对应的有相应的功能如下图 对DMA比较形象的描述配置代码:一般在发送中断里面清除标志位,接收一般是串口空闲中断和DMA接收一起完成,即先关闭接收中断,再使能空闲中断(接收到一帧数据就进入空闲中断)USART_ITConfig(USART3, USART_IT_RXNE, DI...原创 2019-06-30 22:25:54 · 1482 阅读 · 0 评论 -
平衡车上位机下位机核心程序
平衡车上位机/下位机程序,下位机使用STM32F103C8T6,PID原理,姿态芯片是MPU6050,用了DMP,中断处理(硬件见博客,中断飞了根线),即时准确;上位机使用QT写的安卓APK,调用手机蓝牙和平衡车通信;全部是工程文件,下位机用的cube环境,库是HAL库,直接可以打开运行,keil_v5和QT,完整程序见平衡车全部程序下位机主要程序:void CarParameter_In...原创 2019-06-30 12:27:24 · 1251 阅读 · 1 评论 -
关于STM32RCT6的远程升级问题(IAP方式下载)
主要参考STM32F103C8T6在线升级 IAP 和 STM32 IAP在线升级教学就是通过串口向单片机烧写程序,可以参考正点原子的视频资料先要写启动引导程序,通常称为IAP程序,写到bootloader区域,这个区域自己划定,存放IAP程序的地址,其实IAP程序就是平常ICP方式下载的模式,这个启动程序你平常怎么写就怎么写,不用配置地址,直接从0X8000000开始写入,keil什...原创 2019-05-08 17:31:32 · 1393 阅读 · 0 评论 -
关于keil和看门狗
看门狗一定要喂狗,喂狗不是要在主程序开头,每一个有while的里面都要有一个,多喂几个KEIL快捷键https://blog.csdn.net/dddxxxx/article/details/44813135原创 2018-04-18 21:47:09 · 2183 阅读 · 0 评论