因为第一次接触STM的单片机,各种寄存器和API都不熟悉,于是结合STM的库函数和编程手册对照理解。建立好工程之后,编写main函数。
1.不管哪种单片机,上电以后第一重要的事就是设置时钟和初始化引脚。单看STM32F的时钟:
能作为STM32F103的系统时钟的有三种,外部时钟,内部时钟,PLL时钟。
int main(void)
{
SystemInit();
return 0;
}跟踪到SystemInit里面,一开始CPU工作于内部时钟,代码初始化一些时钟寄存器的值。然后调用SetSysSClock()设置新的时钟源。
static void SetSysClock(void)
{
#ifdef SYSCLK_FREQ_HSE
SetSysClockToHSE();
#elif defined SYSCLK_FREQ_24MHz
SetSysClockTo24();
#elif defined SYSCLK_FREQ_36MHz
SetSysClockTo36();
#elif defined SYSCLK_FREQ_48MHz
SetSysClockTo48();
#elif defined SYSCLK_FREQ_56MHz
SetSysClockTo56();
#elif defined SYSCLK_FREQ_72MHz
SetSysClockTo72();
#endif
/* If none of the define above is enabled, the HSI is used as System clock
source (default after reset) */
}可以看到用户只需要定义相应的宏就可以设定时钟。宏定义在本文件的最上面。我使用的芯片是STM32F103C6T8,文件中定义了
SYSCLK_FREQ_72MHz<

这篇博客记录了作者初次接触STM32F103单片机的学习过程,包括理解时钟设置、初始化引脚以及点亮LED的操作。作者提到时钟初始化函数缺乏反馈信息,降低了程序的灵活性。在设置GPIO并尝试点亮PA3上的LED后,遇到程序下载后未立即执行的问题。此外,还分享了如何解决在STM32项目中使用printf函数导致的运行异常问题。
最低0.47元/天 解锁文章


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



