stm8c语言库函数 stm32f103c8t6库函数例程

STM8的初始化里面 while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE)这个什么意思

首先,你要明白STM8的驱动时钟可以采用外部晶振,也可采用STM8内部的RC振荡器,二者只能选其一。 三个语句中的HSI表明是采用内部RC振荡器。

成都创新互联公司,专注为中小企业提供官网建设、营销型网站制作、响应式网站设计、展示型网站设计制作、成都网站设计等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。

你先看STM8内部的时钟树结构:

其中HSI RC 16MHz就是其内部含有的RC振荡器,是ST芯片在出厂前就经过校正的但有一定误差的振荡器。时钟经过HSIDIV[1:0]这个分频器,可以获得16MHz、8MHz、4MHz、2MHz的输出tHsiDIV,该输出经过Master Clock Switch(通过配置来选择外部晶振还是内部晶振)后,再分配到CPU时钟和外围设备时钟。

因此,STM8可以运行的时钟频率最大可以达到16MHz,你也可以让它低于这个频率运行(有利于低功耗设计)。搞清楚了以上几点,可以知道第一句是配置STM8,让它知道用内部RC振荡器,不要用外部晶振,这样省了一个晶振的钱[成本降低了嘛:)],第二句是让内部振荡器的输出进行8分频,你也可以让它1分频、2分频、4分频,但不能3分频、5分频,因为它内部只设计了这几种分频,况且奇数分频很难实现,你学过数字电路就应该知道。然后第三句话你要看一下库函数的定义

CLK_Source_TypeDef   CLK_GetSYSCLKSource(void)

{

return((CLK_Source_TypeDef)CLK-CMSR);

}

意思是返回寄存器CMSR的值,这个你就要参考一下《STM8S中文参考手册》了,里面搜索CMSR这个词,我的是在第54页,

看到了吗?它是表明时钟准备好了没有的状态标志,就像你去叫别人办事,别人要经过考虑,这就需要等待,同理,你在STM8S内部配置好了时钟后,内部需要产生一定的延迟,而且受各种状况的影响,比如外部供电电压变化、引脚干扰等,有可能导致配置时钟失败,这就要经过查询这个寄存器的值来看是否配置好时钟没有,如果这个寄存器不等于0,则配置成功,否则失败。第三句的while里的意思就是不断地取CMSR的值,看是否等于宏定义CLK_SOURCE_HSI(OXE1),如果相等了,则跳过循环,继续执行以后的语句。

STM8单片机有MATH函数吗,冥函数怎么做运算

math是C语言库函数,跟单片机类型关系不大,只要编译器支持C语言,就可用这个库

stm8用库函数初始化GPIO引脚,与stm32调用库的方式不一样?

#define Relay1 GPIO_PIN_2

#define Relay2 GPIO_PIN_3

GPIO_Init(GPIOA,(GPIO_Pin_TypeDef)(Relay1|Relay2),GPIO_MODE_OUT_PP_LOW_SLOW);

用宏定义可方便以后修改

STM8S系列单片机如何使用printf函数

这跟单片机没关系,这是C语言的库函数

使用时只需将 putc函数(被printf函数调用)换成串囗发送函数即可,换了之后优先调用用户编写的putc函数


当前文章:stm8c语言库函数 stm32f103c8t6库函数例程
网址分享:http://azwzsj.com/article/ddigjso.html