STC系列单片机简介
stc89系列:传统单片机,一条指令一般至少12个时钟周期,12/24/48不等;具有外部中断、定时器、UART功能,时钟频率支持0-42M;
stc12系列:高速单片机,很多型号支持内部RC时钟和外部晶振时钟,除了89系列的资源,往往还有AD、PWM、PCA、SPI功能,时钟频率支持0-35M;
stc15系列:除了以上,其内部的RC震荡电路,具有高精度,且可调的特点。
MacOS/Linux/树莓派 配置
- 安装sdcc作为编译器;安装stcgal作为下载器;
- 在mac上还可以安装visual studio code,然后安装Platform.IO插件,达到类似keil的效果。
- 树莓派就是一个Linux系统,和Linux配置是一样的。
- 最小电路:
- Vcc/Gnd
- 如果使用外部时钟,需要外接晶振和起振电容,在使用内部晶振的情况下,晶振引脚维持稳定电平,无震荡;
- 某些型号的单片机,需要将P1.0, P1.1引脚接低电平,具体参见数据手册;
FAQ
- 12系列单片机如何切换内部、外部时钟?
指定clock_source选项
stcgal -D -o clock_source=internal playground1.ihx -p /dev/ttyUSB0
,参见stcgal说明文档:doc - stc12c5410ad
stcgal -D playground1.ihx -p /dev/ttyUSB0
遇到下列问题(一般是没有指定平台,即单片机系列型号):
Waiting for MCU, please cycle power: <- Packet data: FF
<- Packet data: 46 B9 68 00 29 00 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 66 45 00 E0 6A 83 FD F7 F7 FF FF FF BF FF FD F7 F7 FF 04 AD 16
done
Protocol detected: stc12
<- Packet data: 46 B9 68 00 29 00 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 04 DE 66 45 00 E0 6A 83 FD F7 F7 FF FF FF BF FF FD F7 F7 FF 04 AD 16
Protocol error: packet checksum mismatch
-> Packet data: 46 B9 6A 00 07 82 00 F3 16
Disconnected!
或者(一般是将platform参数指定为stc12)
Waiting for MCU, please cycle power: <- Packet data: C0
<- Packet data: 46 6E
<- Packet data: 0B
<- Packet data: 29
<- Packet data: 25
<- Packet data: 57
<- Packet data: FA
<- Packet data: 25
<- Packet data: 57
<- Packet data: FA
<- Packet data: 25
<- Packet data: 57
<- Packet data: FA
<- Packet data: 25
<- Packet data: 57
<- Packet data: FA
<- Packet data: 66
<- Packet data: 51
<- Packet data: E0
<- Packet data: AD
<- Packet data: FF
<- Packet data: DF
<- Packet data: FF
<- Packet data: FF
<- Packet data: FB
<- Packet data: FF
<- Packet data: DF
<- Packet data: FF
<- Packet data: 50
<- Packet data: 16
显式指定芯片类型为stc12a
. stcgal -D -P stc12a playground1.ihx -p /dev/ttyUSB0
. 这是stcgal的一个issue
- stc12c56系列无法下载
一般使用内部时钟不会有问题;如果使用外部时钟,需要将P1.0,P1.1接地,官方文档电路有示意,但是没有强调。
.