初学STM8,先是照着网上的教程建立了一个IAR工程,然后下载一个官方的固件库,搞了一个案例模板,功能超简单,就是一个LED灯闪烁,main函数就这么点内容:
void main(void)
{
/* Initialize I/Os in Output Mode */
GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
while (1)
{
/* Toggles LEDs */
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
Delay(20000);
}
}
直接连接STM8核心小板就欢快地跑起来了。。。等等?是不是少了什么?
为什么我没配置时钟,STM8芯片还能跑?
对比STC的51单片机,嗯,可能是配置位的问题,我就先看一下配置位:
这几个和时钟配置相关的配置位都没有内部rc震荡器的配置。
没办法,只能去看一下STM8S103的芯片文档。。。还是官方资料靠谱,原因在这里:
这个芯片哪怕不设置时钟,也会运行一个内部时钟8分频的2M默认时钟,与STM32不同的是,对于GPIO口的配置不再依赖其他时钟,所以程序就能依据这个2M的时钟让IO口闪动,果然解决疑难杂症的最好法子还是看手册(如果手册没问题的话)。
本文探讨了STM8芯片即使未显式配置时钟也能运行的原因。STM8默认使用内部时钟8分频的2M时钟运行,使得GPIO配置不依赖其他时钟,能够实现LED灯闪烁等功能。

586

被折叠的 条评论
为什么被折叠?



