SDCCeclipse51STM8开发环境搭建.docx
- 文档编号:23539211
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:18
- 大小:684.11KB
SDCCeclipse51STM8开发环境搭建.docx
《SDCCeclipse51STM8开发环境搭建.docx》由会员分享,可在线阅读,更多相关《SDCCeclipse51STM8开发环境搭建.docx(18页珍藏版)》请在冰豆网上搜索。
SDCCeclipse51STM8开发环境搭建
开发51系列的单片机,国内的绝大部分人使用的是基于keil的开发环境,不过该商业软件是收费的,这算一个不太好的地方,另一个不好的地方是它的编辑环境已经跟不上时代的步伐了,尽管一般软件的体量并不大
SDCC是一个免费的编译器,是跨平台的,其他操作环境也能工作,至于什么是编译器/编译器如何工作,请自行XX,如果能深入一些理解这些问题,算是一个大的提高
SDCC在windows下面进行工作,可以直接参考SDCC的相关文档编写用命令行直接进行“原始开发”,但是这种方式显然不适合大众开发者,除非为了证明你有超凡的编程能力以及组织软件工程的能力,毕竟有了更好的工具,可以大大提高效率,让开发更关注业务逻辑本身
所以eclipse是一个很好的目标平台,并且已经有人为我们免费开发了一些相应的工具,尽管这些工具已经很老,并且可能存在一些问题,但是经过一些改动,还是能很好的工作起来的,下面进入正式开发环境搭建工作
需要准备的硬件有
1、AT89S52开发板一块【其他51系列的也行】
2、ISP下载工具【淘宝有很多,或者其他烧录工具】
3、其他配件,如USB串口、电源等
需要准备的软件【推荐用比较新的版本】有很多。
分别是
1、jdk[根据自己带你电脑选择32或者64位]
2、eclipse[C++版本、根据自己带你电脑选择32或者64位]
3、SDCC【根据自己带你电脑选择32或者64位】
4、Cygwin【建议安装离线版本】
5、ISP的下载软件【】
安装完后打开eclipse,进行安装插件
此插件“net.sourceforge.eclipsesdcc-1.0.0-win32.x86”需要现在网上下载下来,之后解压,但是在比较新的eclipse中已经无法进行正常使用了,需要做一下修改,具体步骤是,解压后存放在eclipse目录下的“dropins”下面,如图
之后需要修改,找到“~~\dropins\net.sourceforge.eclipsesdcc-1.0.0-win32.x86\plugins\net.sourceforge.eclipsesdcc_1.0.0”目录,把Cygwin软件bin目录下面的sh.exe复制到该目录,之后重启,就可以正常工作了,这里注意一下,需要把各软件的的一些可执行文件加入到环境变量【如果你看不懂这句话,说明这篇文章可能不适合你】,不然会出问题的
打开eclipse新建工程文档,如图
完成后需要进行配置
右键工程文件主目录,打开配置选项,按下图配置
这样的话就可以了,我的目录结构是
到这里,实际已经可以正常编译【通过点击小锤子图标】并生成HEX文件了,有一点需要注意,SDCC与keil的一些关键字是不一样的,这个属于C语言下面的“方言”,主要用到的是sfrsbit以及interrupt的一些使用,我截图一下,读者自行领悟一下应该会明白的,
关键字是以在前面加双下划线的,并且sbit必须加上地址,另外就是中断,中断是这么定义的,如图
这个和keil基本是一样的,前面加上双下划线即可,还需要注意的是,中断函数必须要声明到main函数文件中去,否则很可能无法生效,这个不清楚是bug还是开发人员故意这么搞
另外就是,目前还不清楚的一些问题,主要是eclipse不识别SDCC中的一些关键字,导致SFR中的类似与P0这些无法识别,导致一直报错,但是可以正常编译的,可以打开相关的设置,把所有的相关的报错设置关闭掉【图中是把所有的全部都关掉了,可以根据实际需要打开或者关闭某些提示】
至此已经可以正常开发51程序了,关于STC的可以适当的修改一下头文件也是可以开发的,另外这里说一下,关于在这个环境下面printf函数的实现,实际非常简单,只需要在文件中包含stdio.h并实现voidputchar(char);函数即可[有的版本可能类型不一样,按照提供的类型完成即可],这个我们选择串口方式输出,所以只需要,把能正常调用串口发送一个字节的函数写到里面即可,可参考下面的代码
/******************************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途
*******************************************************************/
#include
#include"UART.h"
#include"MyType.h"
#include"config.h"
#include
#defineFclk11059200UL/*使用11.0592M晶体*/
#defineBitRate9600UL/*波特率定义为9600*/
volatileuint8g_tx_is_sending;
/********************************************************************
函数功能:
串口初始化。
入口参数:
无。
返回:
无。
备注:
无。
********************************************************************/
voiduart_init(void)
{
EA=0;//暂时关闭中断
TMOD&=0x0F;//定时器1模式控制在高4位
TMOD|=0x20;//定时器1工作在模式2,自动重装模式
SCON=0x50;//串口工作在模式1
TH1=256-Fclk/(BitRate*12*16);//计算定时器重装值
TL1=256-Fclk/(BitRate*12*16);
PCON|=0x80;//串口波特率加倍
ES=1;//串行中断允许
TR1=1;//启动定时器1
REN=1;//允许接收
EA=1;//允许中断
}
////////////////////////Endoffunction//////////////////////////////
/********************************************************************
函数功能:
串口中断处理。
入口参数:
无。
返回:
无。
备注:
无。
********************************************************************/
voidserial_isr(void)__interruptSI0_VECTOR
{
if(RI)//收到数据
{
RI=0;//清中断请求
}
else//发送完一字节数据
{
TI=0;
g_tx_is_sending=0;//清正在发送标志
}
}
////////////////////////Endoffunction//////////////////////////////
/********************************************************************
函数功能:
往串口发送一字节数据。
入口参数:
d:
要发送的字节数据。
返回:
无。
备注:
无。
********************************************************************/
voidUartPutChar(uint8d)
{
SBUF=d;//将数据写入到串口缓冲
g_tx_is_sending=1;//设置发送标志
while(g_tx_is_sending);//等待发送完毕
}
////////////////////////Endoffunction//////////////////////////////
//实现printf,需要实现该函数
voidputchar(charch)
{
UartPutChar(ch);
}
然后就可以愉快的使用printf函数了,这个比keil的要好一点,keil的printf不能直接输出char为正数,需要转化为int,否则是不可靠的,特此提醒
之后把Debug目录下面的hex文件通过ISP烧录到芯片去验证结果即可
下面将一下关于用这个环境开发STM8单片机的一些内容,首先先准备好补充的软件和硬件
软件需要STVisualProgrammer(官方自带的下载工具),硬件需要stlink(SWIW方式下载程序)
建立工程和51是一样的,其实应该可以选择不同的平台,但是这个插件不支持,毕竟已经很久没有更新了,笔者暂时没有能力自己弄一个,所以也只好将就着使用,可以更改一下配置还是正常使用的,先上图
看起来还是很不错的,秒杀IAR,下面说一下配置,需要手动设置的,不过建立好模版后就不需要再改了,不算太麻烦
这样就算搞定好设置了,主要是更改了MCU平台,其他的和51没啥区别,不过这里没有指定ROM和RAM,不过一般情况下是够用的,编译时提示warning133:
Model'--model-small'notsupportedforstm8,ignored.是正常的,可以不用理会
下面讲一下如何下载到STM8当中,可以参考下面的配置
可以根据自己的实际环境更改工具的实际目录,其他的除非芯片型号,其他的不要改,如果一切连接正常,就可以下载了(如果提示无法下载,很可能需要你手动点一下工程主文件夹名,表示软件当前选中的工程)
可以使用SDCC里面的头文件进行开发,也可以通过库文件操作,网上可以找到,在git里搜索
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SDCCeclipse51STM8 开发 环境 搭建