历史上的今天

今天是:2024年09月14日(星期六)

正在发生

2020年09月14日 | stm8笔记1-搭建工程+孤独的小灯闪烁

发布者:TranquilMind 来源: eefocus关键字:stm8  搭建工程  小灯闪烁 手机看文章 扫描二维码
随时随地手机看文章

这里使用的单片机是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笔记1-搭建工程+孤独的小灯闪烁

上一篇:STM8系列单片机开发环境搭建
下一篇:STM8--UART2

推荐阅读

9月8日,佛山市顺德区人民政府同碧桂园集团旗下全资子公司—广东博智林机器人公司(简称“博智林机器人”)举行签约仪式,选址粤港澳大湾区核心腹地—广东佛山顺德,共同打造集科研、实验、生产、文化、生活、教育于一体的机器人谷。签约仪式现场,碧桂园集团董事会主席杨国强表示,碧桂园计划五年内在机器人领域投入至少800亿元,将机器人更广泛地运用到...
北京时间9月11日凌晨,苹果在2019年秋季新品发布会上推出了Apple TV+,同时库克展示了Apple TV Plus将会有的三个预告片,《morning show》以及《see》,库克表示他最喜欢《see》这部电影。Apple TV+将于11月1日上线,订阅价格为4.99美元每月。  现场库克与我们分享了《see》的片花。《see》讲的是是一个失去视觉的世界。在未来的世界,所...
从知情人士处获悉,字节跳动不会将TikTok业务出售给微软的消息是比较准确的,并且也不会将美国分公司出售给甲骨文。路透社早些时候报道称,微软已收到字节跳动的通知,不会出售TikTok的美国业务。此外,甲骨文或将根据拟议中的交易成为字节跳动的合作伙伴,负责管理TikTok在美国的用户数据,并就入股TikTok进行谈判。
具体实现功能 系统由STC89C52单片机+L数码管+光敏电阻+人体感应模块+红外接近传感器模块构成。具体功能:(1)亮度不够且有人靠近时台灯自动亮;(2)靠的太近会提醒坐姿不正(蜂鸣器);(3)附近无人时台灯自动熄灭(30秒),时间可调;(4)根据环境亮度调节等亮度;(5)可手动调节台灯亮度;(6)设定学习时间。设计背景台灯已是千家万户的必需生活用...

史海拾趣

问答坊 | AI 解惑

Microchip无线识别应用的独立模拟前端

 Microchip无线识别应用的独立模拟前端Microchip无线识别应用的独立模拟前端Microchip Technology Inc. (美国微芯科技公司)发布其首款适用于智能化125 kHz低频无线识别应用的独立模拟前端(AFE)器件。MCP2030这一新款模拟前端器件配备三通 ...…

查看全部问答∨

基于PDA的核数据采集系统的研究.pdf

基于PDA的核数据采集系统的研究.pdf…

查看全部问答∨

又见太阳能,实用还是噱头?

现在的绿色环保概念真是无处不在,前不久看到深圳芯海科技展出了一款基于他们的芯片方案的太阳能人体秤,据说在室内光照条件下都完全可用,而且已经有厂商用他们的这套方案量产太阳能人体秤了。一个人体秤那点功耗,有必要用太阳能吗?是不是为了吸 ...…

查看全部问答∨

max541驱动动态加载和集成进NK的效果不一样?

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 ...…

查看全部问答∨

OMAP-L138使用问题

用OMAP-L138开发板可以实现网络数据传输吗?求大神指点一下大概的实现过程,谢谢啦…

查看全部问答∨

手里没有蓝牙4.0设备怎么玩Ti SensorTag

首先说一下!咱玩的不是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中断了呢? …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved