MicroFlighter 之STM32F103学习——(2)编写第一个STM32程序

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

因为第一次接触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) */ 
}
可以看到用户只需要定义相应的宏就可以设定时钟。宏定义在本文件的最上面。我使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值