历史上的今天
返回首页

历史上的今天

今天是:2025年06月02日(星期一)

正在发生

2018年06月02日 | stm8 点亮第一个LED

2018-06-02 来源:eefocus

第一步:配置时钟

上一讲的程序点亮LED灯并没有设置stm8的时钟,但是LED灯依然可以正常闪烁。为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。

一旦主时钟源稳定,用户程序可将主时钟切换到另外的时钟源。


果然一个厂家的,和stm32差不多。

stm8主时钟有四种时钟源:

● 1-24MHz高速外部晶体振荡器(HSE)
● 最大24MHz高速外部时钟信号(HSE user-ext)
● 16MHz高速内部RC振荡器(HSI)
● 128KHz低速内部RC(LSI)
各个时钟源可单独打开或关闭,从而优化功耗。

时钟相关寄存器:

 


内部时钟寄存器CLK_ICKR中的标志位HSIRDY用以指示HSI RC是否稳定。启动时, HSI时钟信号将不会生效直至此标志位被硬件置位。
HSI RC可通过设置内部时钟寄存器CLK_ICKR中的HSIEN位打开或关闭。

 



  1. void System_Init(void)  

  2. {  

  3.    CLK_SWR = 0xE1;          //选择高速内部时钟HSI为主时钟 可不要这话  

  4.    CLK_ICKR |= 0x01;          //高速内部HSI时钟使能  

  5.    while(!(CLK_ICKR&0x03));   //等待内部高速HSI就绪  

  6.    CLK_CKDIVR = 0x18;       // Fhsi = Fhsi = Fcpu = Fmaster = 2MHz  

  7. }  


这里是选择HSI 8分频后作为系统主时钟。

第二步:配置GPIO

通用输入/输出口用于芯片和外部进行数据传输。一个IO端口可以包括多达8个引脚,每个引脚可以被独立编程作为数字输入或者数字输出口。另外部分口还可能会有如模拟输入,外部中断,片上外设的输入/输出等复用功能。但是在同一时刻仅有一个复用功能可以映射到引脚上。复用功能的映射是通过选项字节控制的。请参考数据手册关于选项字节的描述。每个端口都分配有一个输出数据寄存器,一个输入引脚寄存器,一个数据方向寄存器,一个选择寄存器,和一个配置寄存器。一个I/O口工作在输入还是输出是取决于该口的数据方向寄存器。

每一个端口都有一个输出数据寄存器 (ODR),一个引脚输入寄存器 (IDR)和一个数据方向寄存器(DDR) 总是同相关的。控制寄存器1(CR1)和控制寄存器2(CR2)用于对输入/输出进行配置。

任何一个I/O引脚可以通过对DDR,ODR,CR1 和CR2寄存器的相应位进行编程来配置。

寄存器中的位n对应于口的引脚 n 。

 



设置PE5为推挽输出,最大速度10MHZ。

  1. void Gpio_Init(void)  

  2. {  

  3.   PE_DDR |= 0x20;  //PE5设置为输出  

  4.   PE_CR1 |= 0x20;  //PE5设置为推挽输出  

  5.   PE_CR2 |= 0x20;  //最大输出速度10MHz  

  6. }  


至此关于stm8的时钟和LED连接的GPIO口配置完毕,就可以开始写主函数了。

  1. int main( void )  

  2. {  

  3.   int i,j;  

  4.   System_Init();           //初始化系统时钟  

  5.   Gpio_Init();             //PE5的GPIO口初始化  

  6.   while (1)  

  7.   {  

  8.     PE_ODR ^= 0x20;     //PE5取反  

  9.     for(i=0;i<100;i++)     //延时  

  10.       for(j=0;j<1000;j++);  

  11.   }  

  12. }  


最后编译--下载仿真,按下键盘F5健,LED灯开始闪烁了,那么成功点亮第一个LED 。


推荐阅读

史海拾趣

Connor-Winfield公司的发展小趣事

在近年来,随着人们对环境保护意识的提高,电子行业也开始注重绿色环保和可持续发展。Connor-Winfield积极响应这一趋势,将绿色环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,努力降低产品对环境的影响。同时,公司还积极参与各种环保活动,推动电子行业的绿色发展。

以上是关于Connor-Winfield在电子行业中的5个发展故事。这些故事虽然可能并不完全准确反映公司的实际发展历程,但从中我们可以看出,Connor-Winfield在发展过程中始终注重技术创新、品质提升、市场拓展和环保可持续发展等方面的工作,这些努力使得公司在激烈的市场竞争中保持了领先地位。

Hewlett Packard Co公司的发展小趣事
选用质量可靠、性能稳定的电子元件,以保证电路的稳定性和可靠性。
Elpida Memory公司的发展小趣事

在成立初期,Elpida Memory凭借先进的技术和强大的研发实力,迅速在全球DRAM市场占据了一席之地。然而,随着市场竞争的加剧和技术的快速发展,Elpida Memory也面临着巨大的挑战。尤其是在2008年全球金融危机爆发后,DRAM市场需求大幅下降,产品价格暴跌,Elpida Memory的经营状况也陷入了困境。

Connective Peripherals Pte Ltd公司的发展小趣事

Elpida Memory的成立,标志着日本在DRAM(动态随机存取存储器)领域的一次重要整合。1999年,为了应对全球半导体市场的激烈竞争,日本政府主导了日立、NEC、三菱电机等公司的DRAM业务整合,成立了Elpida Memory。这一举措旨在保护日本在DRAM领域的市场份额和技术优势,同时也为Elpida Memory的未来发展奠定了坚实的基础。

E-San Electronic Co Ltd公司的发展小趣事

E-San Electronic Co Ltd非常重视人才培养和团队建设。公司建立了完善的培训机制,为员工提供了各种专业技能和综合素质的培训机会。同时,公司还注重员工的职业规划和晋升通道建设,为员工提供了广阔的发展空间和良好的职业前景。这些措施不仅提升了员工的综合素质和业务能力,也为企业的发展注入了源源不断的活力。

DBS Microwave Inc公司的发展小趣事

在DBS Microwave的发展过程中,技术创新一直是其核心竞争力。公司不断投入研发资源,突破技术瓶颈,推出了一系列具有创新性的产品。例如,在XXXX年,公司成功研发出了一款高性能的微波滤波器,其性能指标在当时的市场上处于领先地位。这一创新不仅为公司赢得了大量订单,也进一步巩固了其在行业内的技术领先地位。

问答坊 | AI 解惑

MCS-51单片机温度控制系统

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 MCS-51单片机温度控制系统  …

查看全部问答>

Linux动态加载驱动模块的问题

本人初学驱动开发 照着例子写了个简单的GPIO驱动 控制开发板上的LED 可是动态加载驱动后显示错误 过程如下: 硬件:s3c2440开发板      GPB5-8接4个LED 软件:linux-2.6.29内核      arm-linux-gcc- ...…

查看全部问答>

请问有4路24位的TTL电平信号的数据采集怎么设计和选型?

模拟信号都好采集,但是有的传感器是BCD码输出的,每个传感器的引脚是24条线输出,有4个,请问怎么设计和选型? 这里面可能要用到数据选择器或者寄存器;还有USB控制器…

查看全部问答>

nand flash驱动unable to mount partition

我的nand flash驱动加载时可以创建分区,也可以找到对应的文件系统驱动,但却无法mount这个分区,所以也出现不了盘符,请大家帮帮忙啊~~…

查看全部问答>

硬盘分区

硬盘分区问题 我现在的分区不合理 我想重新分 比如我现在的F盘有三十G、 我想再为它加5G 我已经把这个盘中的所有数据转出来了 我加后会不会影响其它盘的数据? 就是把其它盘的数据搞丢? …

查看全部问答>

怎样将手机的摄像头作为Wince设备的USB设备

我的手机有一个摄像头,而且可以以USB接口连接到桌面计算机上,作为摄像头使用。请问怎样在WinCE设备里也可以这样用呢?需要怎样开发相关驱动?…

查看全部问答>

VS2005调试目标机上应用程序时,用TCP/IP方式连接总是“设备未就绪”??

使用VS2005开发win ce的应用程序,在调试的时间用TCP/IP方式连接到开发板,老说“设备未就绪”,该怎么解决啊?…

查看全部问答>

请教,关于ADS编译C++的问题

请教,我用ads1.2编译c++程序总是报一些头文件找不到,我把system path加了vc的库,结果有出了“only win32 and Mac supported\"这个问题,请问怎么办?ads1.2上可以编译c++吗?要怎么做? …

查看全部问答>

关于stm32驱动7279键盘的问题

#include #include \"sys.h\" #include \"delay.h\" #include \"7279.h\" unsigned char Keynum; /****************************************************************************** 函数名:7279_WriteByte 输  入:dat:一 ...…

查看全部问答>