Keil使用时遇到的问题
一,编译不通过解决方法
1⃣️optimizie 选项里
Level等级设置为最低
二,找不到j-link 解决方法
1⃣️环境变量 (作用:系统在当前目录下找不到,就去环境变量中搜索路径,找到,运行)
2⃣️设置为SW模式,不是JTAG
三,兆易芯片编译不通过
降低Keil版本,太低也不行,5.26版本可使用
四,写flash时
,注意⚠️按照芯片手册扇区擦除,各数据分区确定好,读同一扇区数据也要注意
五,买到dao版j-link,程序下载不进去
降低Keil版本(识别不到是dao版,无弹窗)就能下载进去,
仿真时有弹窗,也可以降低版本。注意安装j-LinK驱动,在keil 安装路径下。 用j-link烧录hex文件,找到想要的芯片型号,升级j-link的版本
六,程序中文乱码
1⃣️更改win系统的编码方式,不改的话,Keil里改了也没用
2⃣️更改Keil软件里的编码方式
七 以下为建立路径所使用的几个特殊符号,及其所代表的意义:
./:代表目前所在的目录。
…/:代表上一层目录。
以/开头:代表根目录。
七 keil生存bin文件报错
编译生成的是一个名称为 xx.bin 的文件夹而不是我们想要的bin文件, 如下图
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin .\output\Project.axf -o .\output\h2.bin
这种情况一般是我们的程序里使用了 “attribute” 等命令来指定某些变量到指定的ROM地址中, 而这个地址又刚好不是我们的工程程序所在的ROM地址区域, 例如, 现在我指定一个变量到0x8003000;这个地址, 而我们程序的开始的地址是0x8006000, 此时编译器的编译时会将程序分段, 也就会生成上诉的多个文件, 解决方法是将需要设置在ROM中的变量设置在本工程程序的ROM内, 即起始地址之后, 结束地址之前
原文链接:https://blog.youkuaiyun.com/pengpenngpeng/article/details/108297417
七 keil生存bin文件报错
'不是内部或外部命令,也不是可运行的程序 原因:公司电脑把脚本加密了,需要解密执行。把杀毒软件给退了,
九 如何理解标志位和中断标志位的区别
1、当某个模块(比如串口、定时器)含有状态寄存器则涉及标志位和中断之间的区别,进而有库函数FlagStatus和ITStatus的使用区别。
2、标志位置位,是指当某事件发生时,无论对应的中断是否使能都会使得相应的标志位置位。
而当对应的中断也使能时,可以产生中断,此时要进行中断优先级配置、初始化配置、编写中断服务函数。
ps:实际上在中断服务函数中判断中断是否发生,是借助了标志位判断(有些地方将其称为中断标志位)
3、进而可以理解库函数FlagStatus和ITStatus的使用区别。库函数FlagStatus单纯判断标志位是否置位,即当事件发生但是没有使能对应事件的中断时,标志位仍然置位,但没有发生中断。而库函数ITStatus,不仅判断了标志位还判断了使能位,只有当中断发生(事件发生+中断使能)才返回SET
4**. 标志位仅判断状态寄存器的标志,中断标志位 不仅要判断状态寄存器的标志位,还要判断中断使能位**
十、关于烧录下载的问题

Erase Full Chip 表示 擦除全部与设置区域大小无关, Erase Sectors 表示擦除设置好的区域,如下图
