问题列表
- CH340串口识别失败(22.12.17)
- Keil5 如何兼容C51和STM32(22.12.17)
- 如何创建C51工程模板(22.12.17)
- 如何修改字体大小(22.12.17)
- 将浮点数或整数转化为字符串方案(23.03.04)
- Keil的 "0xFD" Bug(23.03.04)
- 常见警告信息
- 未调用函数警告(22.12.19)
- 常见报错信息
- 变量定义报错(22.12.19)
- 文件类型导入错误(23.3.13)
CH340串口识别失败(22.12.17)
- 用数据线连接好,打开设备管理器,检查端口(COM),是否有“CH340”字样的串口。若无,则说明串口未正确识别。
- 检查CH340驱动是否安装。
- 更换数据线再次尝试。有的数据线接口看似有5个pin(如Micro USB),但实际只有两根充电线,没有数据传输功能,没有差分信号,自然无法识别串口。
- 换一个电脑的USB接口进行尝试,有可能是接口质量问题。
- 检查USB转TTL电路是否有虚焊,损坏。(一般不会)
Keil5 如何兼容C51和STM32(22.12.17)
- 进入官网,对于51单片机和STM32单片机有两个版本。
- Keil uvision5(MDK-ARM) : Development environment for Cortex and Arm devices. 为Cortex内核和ARM内核设计。
- Keil uvision5(C51) : Development tools for all 8051 devices. 为51内核设计。
- 将两个版本都下载至同一个目录下即可同时使用。
如何创建C51工程模板(22.12.17)
- Keil4:找Atmel公司的AT89C52芯片即可。
- Keil5:找Microchip中的AT89C51/AT89C52即可。
如何修改字体大小(22.12.17)
- 打开Keil,点击最右侧扳手图标,点击Font选项卡,选中C/C++,修改对应字号。
- 若出现"access to xxxx global.prop was denied"的字样,关闭Keil,以管理员身份运行Keil重复上述操作即可。
将浮点数或整数转化为字符串方案(23.03.04)
使用 sprintf 字符串格式化函数,格式为
#include <stdio.h> //需包含头文件
char strA[10]; //保证一定长度,用于保存字符串
char strB[10];
sprintf(strA, "%d", 123); //整数转换字符串
sprintf(strB, "%0.6f, 3.141593"); //浮点数转换字符串需要注意:在整数转换时,"%d"指 int 类型,占两字节,故传递整数时也应传递 int 类型。如果误输入常用的 unsigned char 类型(仅占1个字节),会导致转换结果异常。
Keil的 “0xFD” Bug(23.03.04)
在一次偶然的串口通讯过程中,汉字 “数” 始终无法正确显示,经验证是 Keil 的历史遗留 Bug。
汉字机内码以 0xFD 结尾的部分汉字会被截尾(如数,正,过等),甚至影响到后面汉字的正常显示。应尽量避免使用上述汉字。
常见警告信息
未调用函数警告(22.12.19)
```c
*** WARNING Lxx(行号): UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?xxxx(函数名)?MAIN
```
**如果你定义了一个函数,但并没有调用它,就会产生这个警告**。这在标准C编程中一般不会警告。我猜测是单片机的RAM资源相对紧缺,通过该警告可以提示编码人员精简无用代码。常见报错信息
变量定义报错(22.12.19)
```c
main.c(xx): error C141: syntax error near 'int', expected 'sizeof'
```- 首先检查有没有犯弱智错误:括号,分号是否漏打。
- 如果语法没有问题,那么一般是编译器的差异导致的。Keil编译器遵循的是比较古老的C标准。在函数定义的内部,必须把所有的局部静态变量和自动变量都声明了之后,然后才能开始后续的代码书写,否则编译器会报错。
- 举个栗子,在标准C中,我们可以变量定义写在for循环里。
for(int i = 0; i < 10; i++){
// 正常运行
}然而在Keil中,这么写就会报上述错误,导致变量未正确定义,后续只要使用到该变量就会报 undefined identifier 的错误(可能会产生一大堆)。
所以应该更正为
int i; //先定义变量
for(i = 0; i < 10; i++){
//正常运行
}文件类型导入错误(23.3.13)
```c
FCARM - Output Name not specified, please check ‘Options for Target - Utilities
```
用户的`.c`和`.h`文件被导入 **keil** 时有可能会被识别成 **image file** 文件(==图标与正常C文件不同==)。选择对应文件右击选择`Options for File`,在`File Type`选择正确的文件类型。
















