51单片机-在Mac搭建环境sdcc+stcgal

Sabah ·
更新时间:2024-11-10
· 526 次阅读

主要内容 搭建开发环境 安装SDCC 安装stcgal 安装USB转串口驱动CH341_MAC 实例代码Demo_Cycle.c 编译代码 烧录程序 Makefile编写 搭建开发环境

Mac系统版本: MacOS Catalina
USB转串口: CH340/341
单片机型号: STC90C52RC

安装SDCC 简介

SDCC是什么?其实sdcc就是一个提供优化标准 C (ANSI C89, ISO C99, ISO C11) 的编译器套件。知道这么多已经够了,内部兼容多种单片机的编译。

在Mac使用包管理工具安装sdcc

192:~ ichabodcrane$ brew install sdcc

安装完成后可以用以下命令查看:

192:~ ichabodcrane$ sdcc -v SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ez80_z80/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8/pdk13/pdk14/pdk15 4.0.0 #11528 (Mac OS X x86_64) published under GNU General Public License (GPL)

如果出现以下版本信息则安装成功。

安装stcgal

stcgal是一款烧录工具,还有一个叫stcflash,但是我们使用stcgal就行了,stcgal比stcflash更强大。

如何使用stcgal 经过测试的MCU型号列表 常见问题

安装stcgal需要依赖Python 3.2以上版本,所以需要先安装Python 3.x,安装完后,我们就可以使用以下命令安装stcgal

pip3 install stcgal 安装USB转串口驱动CH341_MAC

这个就非常简单了,下载地址点击进入即可CH341SER_MAC_ZIP,解压后,按照README.pdf操作即可。

安装完成后,用USB连接电脑,使用以下命令查看是否有串口出现

ls /dev/cu.wchusbserial*或 ls /dev/cu.* 192:~ ichabodcrane$ ls /dev/cu.* /dev/cu.Bluetooth-Incoming-Port /dev/cu.wchusbserial1410 /dev/cu.usbserial-1410

注意:在10.15.x以上版本可能会出现安装驱动后,连接USB使用以上方法查看不到串口的情况。如果出现这种情况请根据以下方法操作,如果正常可以忽略

按住电源键重启,立即按住Command+R进入Recovery模式。 在菜单上选择,打开Terminal控制台。 运行命令: csrutil enable --without kext 输入:reboot 系统重启后,访问CH341SER_MAC_ZIP下载驱动、安装即可。

上面搭建环境都弄好后,我们就可以编码了,然后使用sdcc编译此代码看看效果。

实例代码Demo_Cycle.c #include #define uint_8 unsigned int uint_8 len = 8; void delay_ms(uint_8 ms); void main() { uint_8 i; while (1) { P0 = 0xff; for (i = 0; i > 1; delay_ms(100); } P0 = 0xff; for (i = 0; i < len; i++) { P0 = P0 < 0; i--) for (j = 110; j > 0; j--) ; } 编译代码

如果编译没有任何报错,就代表编译通过了。

sdcc Demo_Cycle.c

然后在文件相同路径下会多出几个以下文件,我们主要用到的是.ihx.hex的文件

Demo_Cycle.asm Demo_Cycle.lst Demo_Cycle.map Demo_Cycle.mem Demo_Cycle.rel Demo_Cycle.rst Demo_Cycle.sym Demo_Cycle.lk Demo_Cycle.ihx 烧录程序 stcgal -P stc89 -p /dev/cu.wchusbserial1410 Demo_Cycle.ihx

终端会在这里等待,直到你把单片机重新上电后,会继续执行烧录工作。重新上电后效果:

~ ichabodcrane$ stcgal -P stc89 -p /dev/cu.wchusbserial1410 Demo_Cycle.ihx Waiting for MCU, please cycle power: done Target model: Name: STC90C52RC Magic: F022 Code flash: 8.0 KB EEPROM flash: 6.0 KB Target frequency: 11.950 MHz Target BSL version: 4.3C Target options: cpu_6t_enabled=False bsl_pindetect_enabled=False eeprom_erase_enabled=False clock_gain=high ale_enabled=True xram_enabled=True watchdog_por_enabled=False Loading flash: 230 bytes (Intel HEX) Switching to 19200 baud: checking setting testing done Erasing 2 blocks: done Writing flash: 640 Bytes [00:00, 1585.57 Bytes/s] Setting options: done Disconnected! Makefile编写

因为命令行每次都要输入比较麻烦,我们可以编写Makefile文件使用make命令做编译、烧录和清理。这里不对Makefile语法做相关介绍,有兴趣可以到网上查询相关信息,以下是一个简单的单文件Makefile文件:

CC = sdcc # 编译工具 CLEAN_SUFFIXS = .asm .lst .map .mem .rel .rst .sym .lk .hex .ihx # 生成的后缀文件,烧录完后清除 stctool = stcgal # 烧录工具 protocol = stc89 # stc89型号 upload_port = /dev/cu.wchusbserial1410 #串口 badu = 9600 #波特率 # 编译 %.rel: %.c $(CC) -c $< # 编译输出.hex文件 %.hex: %.rel @echo "编译中......" $(CC) $< -o $@ @echo "开始烧录程序......" $(stctool) -b $(badu) -P $(protocol) -p $(upload_port) $@ @echo "清除文件...." make clean #清理编译文件 clean: RM $(foreach i, $(CLEAN_SUFFIXS), *$(i))

只需要使用以下命令就能开始编译、烧录和清理的工作

make Demo_Cycle.hex

效果

~ ichabodcrane$ make Demo_Cycle.hex sdcc -c Demo_Cycle.c 编译中...... sdcc Demo_Cycle.rel -o Demo_Cycle.hex 开始烧录程序...... stcgal -b 9600 -P stc89 -p /dev/cu.wchusbserial1410 Demo_Cycle.hex Waiting for MCU, please cycle power: done Target model: Name: STC90C52RC Magic: F022 Code flash: 8.0 KB EEPROM flash: 6.0 KB Target frequency: 11.952 MHz Target BSL version: 4.3C Target options: cpu_6t_enabled=False bsl_pindetect_enabled=False eeprom_erase_enabled=False clock_gain=high ale_enabled=True xram_enabled=True watchdog_por_enabled=False Loading flash: 230 bytes (Intel HEX) Switching to 9600 baud: checking setting testing done Erasing 2 blocks: done Writing flash: 640 Bytes [00:00, 1001.76 Bytes/s] Setting options: done Disconnected! 清除文件.... make clean RM *.asm *.lst *.map *.mem *.rel *.rst *.sym *.lk *.hex *.ihx

最终运行后,在单片机上看到的是一个循环亮灯的效果,从高位开始到低位,再从低位到高位循环点亮。最后给出我的个人公众号:Micro码上有,不定时更新分享单片机的一些知识,时间过得特别快,又是时候讲拜拜咯`。

MatchSir 原创文章 1获赞 0访问量 74 关注 私信 展开阅读全文
作者:MatchSir



51单片机 mac 单片机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号