|
|
第一部分:安装及快速启动
1.已安装arduno IDE,直接至步2,否则在arduino管网上下载最新arduino ide,并安装且能正确运行无误;
2.在我共享给坛友的百度网盘上下载:read.txt 文件,这是一个包含最新内容的说明文档,如和本文不一致,以该文档为准;阅后下载压缩包:sduino.rar;
3.打开sduino.rar, 将压缩包中sduino文件夹拖放到 arduino->hardware 文件夹中; 该包含已mcs51 系列 arduino core 和 更新到最新版本的stm8 支持;如有老的stm8 sduino 则先删除旧版本;(按下图操作)
4.如已经安装过我EFM32/STM32/LM3S/NUVOTON ARM 版本的坛友可跳过以下 5 部分,直接第6步;否则下载另一个包:tools.rar
5.tools.rar 包含了stlink/和nulink ice命令行版本,前者用于 stm8,后者用于 n76e003和ML51的上传;由于这些工具是和arm core共享的,因此也需将包中 tools文件夹拖放到 arduino->hardware 文件夹中:
6.再次运行arduino,应该能看到支持的mcs51系列芯片和stm8芯片的选择菜单;
7.其它:请关注SDCC 官网:http://sdcc.sourceforge.net/ 发布的最新版本,下载后解压,并替换 arduino/hardware/sduino/tools/sdcc 同名全部内容,当前已经是最新版本 build 3.9.0
第二部分:工具菜单选项:
一/二、选择目标板子和芯片:
1.Board(系列):
2.Processor(板/处理器) :
首先选择系列(Board),接着理器(Processor) 中选择对应系列的芯片/板子,如 Nuvoton ML51 系列 / NuMaker_ML51PC 板(芯片)
当前已支持并加入菜单的芯片系列如下:
NUVOTON :N76E003
ML51PC/D
STC: STC8A/F
STC12C5A/LE5A
STC12C56/54/STC12LE56/54
STC15F/L/W
STC89CxRC/RD+
SILICON: C8051Fxxx
AT : AT89C51/52
以后还会增加更多的芯片如:
TI CC1110/2430/2510/2530
CY7C68XXX
三、确定时钟源及频率:
3.Clock source(时钟源):
4.OSC Speed(晶振频率):
5.CPU Speed(CPU速度)
必须选择正确的时钟源和CPU速度,这影响到通信速率如 uart/spi/iic和定时器的准确度,也影响PWM的频率;
时钟源有内部RC振荡器和外部晶振(如有可选用),如果你板子上的的外部晶振和菜单上显示的不一致,可修改boards.txt 文件;
STC内部RC频率注意,这个频率值一定要和STC_ISP下载时选择的参数一致,并且点上[在程序区的结束处添加重要测试参数];
不同板子这些菜单选项项目数和内容有所不同。
四、确定代码的内存模式:
6.Mode(内存模式): 生成的代码可选以下三个模式之一:small/medium/large;
补充下知识:内存模式决定了未明确指定存储类型的变量放在何处的缺省存储区域,其中small 都放在idata,medium为pdata(1 页),而large则为xdata,因此当在small模式下编译出现超内存错误的情形可以试试large模式,或将比较大的数组指定使用外部存储器__xdata;
五、需要连接的整数运算库:
7.Link libs:
SDCC 对于整数运算,分别提供了int/long/long_long三个库,对应的是 16/32/64 位整数运算,菜单提供了两个选项,即:
全部 int+long+long_long 支持 全部整数运行,long_long模式既耗费时间也耗费内存资源;
和部分 int+long, 仅支持 8/16/32 整数运算,因为大多数应用不会用到8字节64整数运算,可节约内存;
六、浮点运算:
8.float lib:
SDCC51 将浮点运算放在一个单独的库中,因此,我们用到浮点运算,就需要连接该库;浮点运算和64位整数运算一样耗费较多的机时和内存资源,因此提供该选项;
64 位 long_long int 整数运算库和float 浮点运算库sdcc都是独立的库,这样我们可以决定是否连接,这取决于我们是否用到了这些运算功能,不使用可节约内存。
七、串口选择:
9.Serial communication: 许多芯片有多个串口及不同的波特率生成方式,可供选择,同时,应用中如同时需用到定时器,则需要注意不要引起资源冲突;
八、 printf 使用:
10.printf use
由于SDCC不支持C++,因此SDUINO采用了一组系列函数来代替arduino的 Serial.print() 和 Serial.println(),我不喜欢这样,增加了对标准printf的支持,相信大家都会用,不用去了解这一组函数 :
Serial_print_xx() 和 Serial.println_xx(), 直接用C标准库函数printf,或 arduino 方式 Serial.printf;但SDCC并未全部支持全部格式输出,提供了不同的库函数来支持,它们分别是:
printf/printf_fast/printf_fast_f/printf_small/printf_tiny/来兼顾 需要内存开销
因此我这里也提供这样的选项,来指定 Serial.printf调用那个函数;auto 选项则根据 8 是否连接浮点库来缺省选择printf_fast_f/printf_fast
该选项不影响库 printf/printf_fast/printf_fast_f/printf_small/printf_tiny/及 Sduino Serial_print_xx() 和 Serial_println_xx()的使用;
九、供电电压:
11.VCC volts:51 芯片有不同的供电电压,这对生成代码没有影响,但如果我们在ADC中采用VCC为参考电压,则需要提供该电压值,这里提供了宏定义 POWER_VCC 的毫伏值来供应用程序使用,缺省值是定义在pins_arduino.h中;
系统中并未用到该定义,
十、上传更新方法:
12.upload methed: 51 不同系列的芯片采用不同的flash上传方法,如 Nuvoton可以用 ice 或 串口bootload,而 stc 则用 stcisp/stc_isp(IDE),这部分最最复杂的,因为不同的mcu上传方法接口都不同,而且需要使用命令行版本;因此仍然需要不断完善;
十一、当前选项摘要:
上述选项,都会在底部状态行上显示选项的摘要:
编译一个空的 sketch,如能看到这样的编译信息,则恭喜你,安装启动成功!
下一步,我们就可以点灯试试了, 内容较多,只能边写,边完善,敬请谅解和等待!
百度网盘:https://pan.baidu.com/s/1i48rVNJ
next
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|