这里使用的单片机是stm8s105s6,IDE是使用的IAR for stm8;
1,首先说一下stm8的时钟:
每一款cup都需要时钟,才能跑起来,就像小车需要发动机一样。
stm8的时钟源有三个,分别是外部晶振/外部时钟,内部高速RC振荡器和内部低速RC振荡器。
1.1 外部晶振和外部时钟信号(HSE)的不同点是,外部晶振是通过晶体谐振器,两个负载电容和单片机内部的电路想配合而产生时钟信号;而外部时钟信号是一个质量好且稳定的信号直接为单片机提供时钟。
两种模式的连接示意图:
1.2 高速内部RC振荡器(HSI)
hsi信号由内部16MHZRC振荡器与一个可编程分频器(分频因子从1~8)产生。分频因子由寄存器CLK_CKDIVR设置决定。精度较低,但是稳定时间短。
注意,启动的时候,主时钟源默认为HSI RC时钟的8分频。
1.3 低速内部RC振荡器(LSI)
128khz的内部RC振荡器LSI产生的时钟是一个低功耗,低成本的可选主时钟源。
1.4 HSE设置为主时钟源
因为此时钟源精度较高,所以一般设置它为时钟源,但是单片机启动时默认为HSI的8分频作为时钟源,所以需要程序切换,这里介绍自动切换方法。
具体步骤:
a.设置切换控制寄存器(CLK_SWCR)中的位SWEN,使能切换机制。
b.向主时钟切换寄存器(CLK_SWR)写入时钟源,寄存器CLK_SWCR中的SWBSY被硬件置位,目标源振荡器启动,原时钟源依然被用于驱动内核和外设。一旦目标源稳定,寄存器CLK_SWR中的值将被复制到主时钟状态寄存器CLK_CMSR中去。此时SWBSY位被硬件清除,新时钟源替代旧时钟源。寄存器CLK_SWCR中的标志位swif被置位,如果SWIFN为1,则会产生一个中断。
2 IO口寄存器
每一个端口都有一个输出数据寄存器 (ODR),一个引脚输入寄存器 (IDR)和一个数据方向寄存器(DDR) ,控制寄存器1(CR1)和控制寄存器2(CR2)用于对输入/输出进行配置。任何一个I/O引脚可以通过对DDR,ODR,CR1和CR2寄存器的相应位进行编程来配置。
3 工程模板搭建
3.1 当你安装好 IAR,在 IAR 安装的目录下(stm8inc),你可以找到所有的stm8的头文件,根据自己的单片机信号选择,包括的main.c中就可以,stm8不像stm32一样,还需要添加驱动文件等,它反而和51有点像。
3.2 搭建工程
3.2.1 打开软件,file-new-workspace,新建工作空间。
3.2.2 project-create new project,新建一个空工程(emply project),保存(最好自己新建一个文件夹放这些东西,方便管理)。
3.2.3 save workspace,保存到工程文件夹下。
3.2.4 右键工程,添加一个group,名字自由定义,我是user。
3.2.5 新建一个main.c文件,这里面将是我们写代码的地方,保存到工程目录,然后在右键我们建立的组,添加刚刚新建的文件进来。
这里注意,如果我们添加进来的文件不在工程文件夹下,需要设置一下他们的路径,让编译器能找到他们。
【project-options-c/c++ compler-preprocessor-additional include directories:
1、$PROJ_DIR$ :IAR工程目录。
2、" " 代表根目录。
3、" . ." 表示返回上一级目录。
举例一下:$PROJ_DIR$..LibrariesSTM8S_StdPeriph_Driverinc
】
3.2.6 配置工程 project-options
选择单片机型号,在General Options --> Target --> Device下选择
在Debugger 下的 Setup 里的Driver 选择 ST-LINK
库配置 General Options- Library Configration:如果需要使用某些标准的库函数接口(如我们使用的printf and scanf),就需要选择Full
4 配上代码,孤独的小灯闪烁
#include "iostm8s105s6.h"
void delay(unsigned int t);
void main()
{
if(CLK_CMSR!=0XB4)//判断当前时钟,如果不是HSE则自动切换成HSE
{
CLK_SWCR|=0X02;//SWEN置1,使能切换
CLK_SWR=0XB4;//目标时钟源为HSE外部晶振
while((CLK_SWCR&0X08)==0);//等待,直到切换成功,SWIF被置位
CLK_SWCR=0;//清除标志位
}
PG_DDR=0X01;//配置PG0为输出
PG_CR1=0X01;//配置PG0为推挽输出
PG_CR2=0X00;//输出速率=2MHz
while(1)
{
PG_ODR|=0X01;//小灯亮
delay(50000);
PG_ODR&=0XFE;//小灯灭
delay(50000);
}
}
void delay(unsigned int t)
{
while(t--);
}
上一篇:STM8系列单片机开发环境搭建
下一篇:STM8--UART2
推荐阅读
史海拾趣
Analogic Corporation 是一家总部位于美国马萨诸塞州的跨国公司,成立于1967年,主要从事医疗影像和航空安全领域的高性能技术产品的设计、制造和销售。以下是 Analogic Corporation 公司发展的相关故事:
成立与初期阶段:Analogic Corporation 成立于1967年,由 Bernard M. Gordon 博士和 Raymond J. Stata 博士等人共同创立。公司最初的业务重点是设计和制造用于医学影像诊断的模拟计算机设备。这些设备利用先进的模拟电子技术,帮助医生进行 X 射线、超声波和核磁共振成像等医学检查。
技术创新与产品优化:Analogic Corporation 在技术创新方面一直处于行业前沿。公司不断投入研发,并开发出一系列先进的医疗影像产品和航空安全技术。其产品包括 CT 扫描仪、核磁共振成像设备、安全检测设备等。这些产品以其高分辨率、高性能和可靠性而闻名,被广泛应用于医疗保健和安全检测领域。
市场拓展与全球业务:Analogic Corporation 在全球范围内建立了广泛的销售网络和合作伙伴关系。公司的产品远销世界各地,包括北美、欧洲、亚洲等地区。通过与国际合作伙伴的合作,Analogic Corporation 不断拓展业务范围,提升产品的市场占有率和影响力。
应用领域与客户合作:Analogic Corporation 的产品被广泛应用于医疗保健和航空安全领域。公司与全球各大医院、诊所、航空公司和安检机构等客户建立了长期稳定的合作关系。通过与客户的紧密合作,Analogic Corporation 不断了解市场需求,提供定制化的解决方案,满足客户的特定需求。
持续发展与未来展望:作为一家具有悠久历史和丰富经验的公司,Analogic Corporation 将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,不断拓展业务领域,进一步提升产品性能和服务水平。在未来,Analogic Corporation 将继续保持行业领先地位,为客户提供更加优质和可靠的解决方案。
在这个故事中,我们将探讨ERP Power如何在云计算技术的推动下实现创新发展。通过引入云计算技术,ERP Power系统为企业提供了更加灵活、可扩展的信息化解决方案,帮助企业降低了IT成本并提高了系统安全性。
华润微的前身可以追溯到1983年成立的香港华科电子公司。这家公司在电子行业中默默耕耘,逐渐积累了技术实力和市场份额。1999年,公司开始涉足6英寸晶圆代工业务,标志着其向半导体制造领域的进军。经过数年的发展和积累,华润微于2002年收购了中国华晶电子集团公司,进一步扩大了其业务范围和市场份额。此后,华润微不断壮大,逐步成为电子行业的佼佼者。
近年来,面对全球芯片市场的激烈竞争和内外部环境的挑战,中科芯坚持创新驱动发展战略,加大市场开拓和科技攻关力度。通过优化产品结构、提升产品质量和降低成本等措施,公司实现了营业收入和净利润的稳步增长。一季度,中科芯的营业收入较正常年度增长24%,净利润增长83%,新签合同增长50%以上。这一成绩的取得充分展示了公司的市场竞争力和发展潜力。
在DDD公司的发展历程中,技术创新一直是其核心竞争力。公司不断投入研发资金,引进高端人才,推动产品升级换代。特别是在模拟和数字延迟线技术方面,DDD公司取得了多项重要突破。这些技术创新不仅提高了产品的性能和质量,也为公司赢得了更多客户的信任和认可。
在电子行业中,合作与共赢是企业发展的重要途径。Altitude Technology深知这一点,因此积极寻求与其他企业的合作机会。通过与一家知名芯片制造商建立战略合作关系,Altitude Technology获得了更先进的芯片供应和技术支持,进一步提升了产品的竞争力。同时,公司还与其他企业开展了一系列合作项目,共同推动电子行业的发展。
Microchip无线识别应用的独立模拟前端Microchip无线识别应用的独立模拟前端Microchip Technology Inc. (美国微芯科技公司)发布其首款适用于智能化125 kHz低频无线识别应用的独立模拟前端(AFE)器件。MCP2030这一新款模拟前端器件配备三通 ...… 查看全部问答∨ |
|
现在的绿色环保概念真是无处不在,前不久看到深圳芯海科技展出了一款基于他们的芯片方案的太阳能人体秤,据说在室内光照条件下都完全可用,而且已经有厂商用他们的这套方案量产太阳能人体秤了。一个人体秤那点功耗,有必要用太阳能吗?是不是为了吸 ...… 查看全部问答∨ |
max541为16bit DA芯片 为该芯片写的wince驱动集成进NK和动态加载效果不一样 1.集成进NK以后 我发现 max541本来应该输出1.25V的时候 却输出了1.8V的电压2.使用DM动态加载时候 max541本来应该输出1.25V的时候 的确输出了1.25V的电压这是为什么呢?… 查看全部问答∨ |
转一块最爱TI DK-LM3S9B96(EE团购,工作原因,一次未用) 本帖最后由 ddllxxrr 于 2016-1-7 16:59 编辑 图就不贴了吧!齐全,一次未用! 联系QQ:343675038可能是发错地方了!如果错了!请管理员帮忙处一下!谢谢! 本站强荐:185娱乐▅城.足球▅真_人.彩票齐全▅手机可投▅注任何游戏. 首次开户送10 ...… 查看全部问答∨ |
|
首先说一下!咱玩的不是APP,玩的是蓝牙!哈哈 TI虽然提供了Android和IOS的蓝牙客户端,但是如果没有蓝牙4.0设备,那就... 仔细看下Ti SensorTag 的文档,Ti SensorTag 模块间通信主要是通过IIC, 好了!准备好下面的东西! 可以运行Android的A ...… 查看全部问答∨ |
我想在下面这个小程序里在加一个按键KEY2 单独控制一个LED2的点亮和熄灭输入端口为P3^1 输出端口为P1^1 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit KEY=P3^0;   ...… 查看全部问答∨ |
“月光族“,本是形容那些花光每月赚的钱的人,所谓“吃光用光,身体健康”的族群。但如今,又冒出来了升级版的“月欠族”。 近日,“月欠族”一词在网络上走红,顾名思义指的就是还没到月底,钱就花光,还需要透支的族群。甚至不乏不只 ...… 查看全部问答∨ |
请问:调试u-boot2014.04的时候,为什么执行 b board_init_f这条代码就出错 请问:调试u-boot2014.04的时候,为什么执行 b board_init_f这条代码,就data_abort中断了呢? … 查看全部问答∨ |