ST单片机STM8S开发入门教程
- 格式:doc
- 大小:929.50 KB
- 文档页数:7
第八章STM8S207时钟编程及其实例本章介绍STM8S207 的时钟编程。
STM8S207 时钟控制器功能强大而灵活易用,允许程序运行中将主时钟从一个时钟源切换到另一个时钟源,而且同一个时钟源可以任意更改分频系数。
8.1 STM8 时钟控制简介时钟控制器功能强大而且灵活易用。
其目的在于使用户在获得最好性能的同时,亦能保证消耗的功率最低。
用户可独立地管理各个时钟源,并将它们分配到CPU 或各个外设。
主时钟和CPU 时钟均带有预分频器。
具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。
抗电磁干扰时钟配置寄存器为了避免由电磁干扰造成的对应用程序误写操作或系统挂起,大多数关键的时钟配置寄存器都有一个互补寄存器与之相对应。
系统将会自动检测这些关键寄存器与其互补寄存器之间是否匹配。
如果不匹配,则产生一个EMS 复位,从而使应用程序恢复到正常操作。
详情请参见时钟寄存器描述。
1、主时钟源介绍下面4种时钟源可用做主时钟1、1-24MHz 高速外部晶振(HSE)2、最大24MHz 高速外部时钟信号3、16MHz 高速内部RC 振荡器(HSI)4、128KHz 低速内部RC(LSI)所以总的来说可以分为三种时钟源,HSE、HSI、LSI2、时钟树,如下图所示由上图可以发现,作为f_cpu 的时钟源可以来源于f_hse、f_hsi 经过HSIDIV分频后的时钟、f_lsi 这三个时钟源。
而选择开关在CKM[7:0]中。
由此事实上可以作为f_master 的时钟源频率有:外部HSE 24MHz内部高速HSI 16MHz、2 分频的8MHz、4 分频的4MHz、8 分频的2MHz(复位默认时钟源)内部低速LSI 128KHz上面得到的频率是f_master 的频率,然后f_master 还可以通过CPUDIV 来分频后提供f_cpu 的时钟,CPUDIV 可以为1、2、4、8、16、32、64、128 分频,最终得到是CPU 的时钟频率f_cpu。
利用ST Visual Develop创建STM8S工程
1.新建一个文件夹,用来保存代码文件和编译生成的各种文件;
2.打开ST Visual Develop 点击File选择New Workspace
3.弹出下图中的对话框,在Workspace filename填入所要的工程名,可以和创建的文件夹
不同名,在worksapce location中选择刚才所创建的文件夹,点OK;
4.点OK后弹出新的对话框,如下图:
如红色字提示设置好之后,点OK;
5.点OK后弹出芯片选择对话框;
找到对应MCU后双击选择,点OK后完成工程创建;
6.工程创建后ST Visual Develop中的workspace 视图如下;
自动生成了main.c文件和中断文件,接下来要在include Files中添加相应芯片头文件;
7.include Files中添加相应芯片头文件:
在Include Files上右键,选择Add Files to Folder
在ST Visual Develop安装文件夹下的include文件夹中选择相应芯片头文件
至此工程创建和编译环境配置完成。
――from 时光祭司。
STM8单片机快速入门王志杰2010-07-28目 录1 ST Toolset可视化开发环境 (3)1.1 安装ST Toolset (3)1.2 汇编语言编程 (4)1.3 调试 (8)1.4 烧录 (11)2 COSMIC C语言编程 (15)2.1 安装COSMIC C编译器 (15)2.2 COSMIC C语言编译器在ST Toolset中的配置 (19)2.3 创建一个COSMIC C语言应用工程 (19)2.4 COSMIC C编译器段的定义(Section) (22)2.5 COSMIC C语言中嵌入汇编指令 (23)2.6 COSMIC C编译器的启动程序 (24)2.7 COSMIC的存储器模式 (26)2.8 COSMIC的位变量设置 (27)2.9 常量定义 (28)2.10 在RAM中运行程序 (29)2.11 如何生产hex文件 (31)3 IAR C语言编程 (32)3.1 安装IAR (32)3.2 创建一个应用工程 (33)4 应用例程 (46)4.1 STM8S应用例程 (46)5 开发工具 (51)5.1 ST-LINK (52)5.2 STX-RLINK (54)6 EMC设计 (55)6.1 PCB设计注意事项 (55)7 ST单片机相关网站 (56)1ST Toolset可视化开发环境1.1安装ST ToolsetST Toolset是ST公司提供的ST的8位单片机的集成开发环境。
可以开发ST7 和 STM8 系列单片机。
ST Toolset可从ST的网站上下载:/mcu。
或者直接从下面的地址直接下载:/stonline/products/support/micro/files/sttoolset.exe下载后,运行安装程序,出现以下界面:安装完成后,可从“开始>ST Visual Develop”来启动TVD,如下图:ST Visual Develop: ST MCU的可视化集成开发环境ST Visual Programmer(STVP),是ST MCU的烧录软件STVD提供了一个汇编的编译器。
STM8S学习——简单操作单个IO口刚接触STM8系列单片机,学习了简单端口的操作,今天就来分享我的成果。
因为是刚接触,各位见笑了。
STM8系列单片机每一个端口都有一个输出数据寄存器(ODR),一个引脚输入寄存器(IDR)和一个数据方向寄存器(DDR)。
寄存器1(CR1)和控制寄存器2(CR2)用于对输入/输出进行配置。
任何一个I/O引脚可以通过对DDR,ODR,CR1和CR2寄存器的相应位进行编程来配置。
下面是我截取的STM8教程里的部分配置表格:大家根据上表对端口进行配置应该没有问题,但是对某一个端口进行配置时可能会遇上麻烦。
那怎么对单个端口进行配置呢?我再附上一个表格,以便说明假设同名端口(PA端口、PB端口等等)都有8个IO口7~0,因此对应上表我们发现正好一个IO口对应一列,比如7所在的列对应7号IO口,0所在的列对应0号IO口,于是单个IO口(假设是PB1)配置程序可写为:PB_DDR = 0x02; // 配置PB端口的方向寄存器,PB1为输出模式PB_CR1 = 0x02; // 设置PB1为推挽输出PB_CR2 = 0x00;下面附上PB1口控制LED闪烁的程序#include "stm8s.h"void GPIO_init(void){PB_DDR = 0x02; // 配置PB端口的方向寄存器,PB1为输出模式PB_CR1 = 0x02; // 设置PB1为推挽输出PB_CR2 = 0x00;}void delay (void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}main(){GPIO_init();//端口初始化CLK_DeInit();//恢复时钟寄存器CLK_HSICmd(ENABLE);//启用内部高速振荡器(HSI 16MHz)CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//主时钟=16MHZ/1=16MHz CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//CPU时钟=主时钟/1=18MHZ while (1){PB_ODR = 0x02;//PB1输出高电平,LED亮delayms();PB_ODR = 0x00; //PB1输出低电平,LED灭delayms();}}。
stm8s 开发(一)使用IAR 新建工程
新建工程是第一步!
a)创建一个Workspace
首先,创建一个workspace。
选择菜单FileNewWorkspace
b)创建一个Project
1)创建一个新的工程,选择ProjectCreateNewProject,创建新工程的对话框,如下2)Toolchain默认是STM8Series。
无需再选择。
3)在Projecttemplates中选择“Emptyproject”
4)弹出SaveAs对话框,选择project保存的路径,并输入project的名字
5)在添加文件到工程中之前,先保存workspace。
选择FileSaveWorkspace,指定要保存的路径,并输入workspace的名字。
一个workspace文件的扩展名是eww.此文件列出了添加到workspace中的所有的project。
相关当前会话信息,比如windows的保存路径和断点保存于
projects\setttings目录下。
c)添加文件和组到工程
可选择ProjectAddFiles选择要添加的C文件。
找到相应的文件。
可选择ProjectAddGroup新建组。
d)工程选项配置
选择ProjectOptions,或者在Workspace窗口,选中project名字,右击选择选择“Options…”
1)在Category中,选择“GeneralOptions”,如2)在Category中,选择C/C++Compiler,显示compiler选项页
这里可以设置编译的优化,一般选择Low级别,若选用High级别的话,。
ST单片机STM8S开发入门教程最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。
好了,长话短说。
手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。
既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。
好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。
偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。
用C语言开发STM8S,需要安装两个软件:1、STVD IDE开发环境;2、COSMIC for STM8 C编译器。
STVD可以到官网下载,下载地址:COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。
下载地址:软件下载后,只需安装STVD。
从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。
后面建立工程的时候设置好路径即可。
下面一步一步开始啦~一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。
ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。
二、双击运行ST Visual Develop,启动STVD开发环境。
执行Workspace,在New Workspace 窗口里选择Create workspace and projects,点击“确定”建立工作组和工程三、在Workspace 里输入Workspace名称,由于最终我们要测试一个现成的LED程序,所以偶写了led,随你喜欢了,呵呵。
STM8S单片机入门3(AD转换及锂电池管理)锂电池以其容量大、充电性能好的优点,已经得到了广泛引用,特别在小型的需电池供电的电子设备上。
但是锂电池的充电和使用条件比较严格,比如充电必须以恒流恒压方式,使用时电压不能低于3V等锂电池以其容量大、充电性能好的优点,已经得到了广泛引用,特别在小型的需电池供电的电子设备上。
但是锂电池的充电和使用条件比较严格,比如充电必须以恒流恒压方式,使用时电压不能低于3V 等,所以用锂电池供电的系统一般都需要专门的锂电池管理功能,确保锂电池在正确的工作状态下。
这部分内容以讲述在STM8S单片机系统中,如何使用典型的锂电池充电管理芯片TP4056来实现锂电池的充电,以及如何使用单片机内置的AD转换功能测量电池电压,实现电池电量监控。
1、电路设计电路图如下,使用TP4056做充电管理,TP4056是一款采用恒定电流/恒定电压线性锂电池充电管理IC,电路简单,只需要外接一个编程电容即可实现恒流恒压充电,充电电流取决编程于电阻的阻值,电阻和电流大致有这个关系:R=1200/I(误差10%),如2K编程电阻下,充电电流为580mA。
下图中R1即编程电阻。
发光二极管D1和限流电阻R2组成充电指示电路,正在向锂电池充电时,D1发光。
D2稳压管TL431,和R2一起组成稳定的2.5V参考电压。
这个参考电压输入到STM8S单片机的PD2引脚上(同时也是模拟输入3AIN3),通过单片机的ADC功能可以测量到AIN3(2.5V固定电压)的ADC读数,从而反推出电池的电压。
外部充电电源通过MircoUSB接口P1接入电路。
2、软件设计锂电池充电功能不需要软件参与,TP4056芯片可独立完成。
但是开机状态下的锂电池电量监控需要软件配合实现。
软件要实现的功能是,周期性的采集AIN3的ADC读数,然后计算出电池电压,当电池电压低于3V时,需要自动关机。
STM8S单片机的ADC是10位的,即最大读数是1023,VCC就是其AD转换参考电压,所以有如下关系:1023/AIN3读数=VCC电压/2.5V所以,VCC电压,也即是电池电压=2.5V*1023/AIN3读数1)设置ADC工作模式可以使用STM8S_StdPeriph_Lib库中的ADC1_Init(), ADC1_DeInit(), ADC1_Cmd()来实现ADC工作模式的设置。
ST单片机STM8S开发入门教程
最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。
好了,长话短说。
手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。
既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。
好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。
偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。
用C语言开发STM8S,需要安装两个软件:
1、STVD IDE开发环境;
2、COSMIC for STM8 C编译器。
STVD可以到官网下载,下载地址:
COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。
下载地址:
&bbs_page_no=1&bbs_id=3020
软件下载后,只需安装STVD。
从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。
后面建立工程的时候设置好路径即可。
下面一步一步开始啦~
一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。
ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。
二、双击运行ST Visual Develop,启动STVD开发环境。
执行 File New Workspace,在New Workspace窗口里选择Create workspace and projects,点击“确定”建立工作组和工程
三、在Workspace filename里输入Workspace名称,由于最终我们要测试一个现成的LED 程序,所以偶写了led,随你喜欢了,呵呵。
在Workspace里设置好文件当前要存放的路径。
然后点“OK”确定。
四、在Project filename里输入工程的名称,在Project location里设置好工程的存放路径。
因为我们是要用C语言来开发的,所以在Toolchain里要选择 STM8 Cosmic 编译器;在Toolchain root里就要填写你刚才下载解压后的那个无限制的Cosmic的存放路径就可以
了。
都填好后,点“OK”。
怕大家搞不清楚上面的那个Toolchain root的存放路径,特截图一张。
我是放在那里的,你看你放哪里就填哪里的路径。
五、在MCU Selection里,需要选择实际的MCU型号了,ST送的套件板上的芯片型号是STM8S207SBT6C,而下列的型号中却是STM8S207S8,没对上号,不知道是不是STVD弄错了。
反正偶选下面的STM8S207S8是可以用的,先用着咯,呵呵。
双击型号后,点“OK”。
六、下面工程就建立好了,呵呵,自动生成、、。
试试compile、build,一切顺利,因为现在只有一个主程序,所以还是可以编译通过的,没有什么错误提示,如下下图:
好了,以上就是使用STVD建立工程的详细步骤了。
由于上面的没什么实质的程序运行,所以下面我们要运行一个ADC电压采集,并把采集值赋给定时器,实现定时器PWM的变化输出,驱动LED亮度发生变化的程序,这个程序我是从一个论坛上下载的,应该也是这个套件板的光盘里的内容。
我先把这个程序工程里的3个文件(、、)传上来,其实这个工程也是可以直接运行的,但为了让我们上面辛苦建立的工程发挥下作用,所以还是继续沿用上面的工程,然后把我上传的3个文件名里的、里的内容复制到我们刚才建立好的工程对应的文件里;并把这个文件复制到我们工程目录下,并添加到工程里,这个头文件是必须的。
大家先下载这3个文件:
点击此处下载 :
然后编译程序,成功!
嘿嘿,下面要把实验板连接到电脑调试了。
不过在连机调试前,要先设置下Debug instrument的Target Settings…,实验板配套的是ST LINK,所以就选ST LINK就可以了。
还有一个重要的,差点忘了,那就是STM8S小板需要接独立的外部电源,DC9~12V,插座是内正外负,别搞错正负极了。
接上电源,板上的D4电源指示灯应该亮起,用USB连接线把ST LINK连接到电脑的USB。
然后点击DEBUG按钮,进入仿真调试界面
进入仿真界面后,执行RUN按钮运行程序,这时候实验板进入全速运行的状态,可以看到实验板上的LD2发光二极管以一定的频率在闪烁,LD1微亮,这时候顺时针旋转板上的那个电
位器,可以发现LD2的闪烁频率变慢,同时LD1的亮度增强。
逆时针旋转电位器则反之。
OK,至此STM8S的基础入门到此结束,由于工作繁忙,更深入的了解学习请大家多多探讨,这样才能进步得更快。
谢谢~
本工程里的这个ST公司写的测试程序里有详细的英文注释,看看基本都能看懂。
中断函数需要在里写,大家注意下就可以了。
现在没有用到什么ST的函数库,所以感觉像在用C语言开发AVR,差别不大。
时间仓促,难免有错别字,请大家谅解。