摘要:
之前的推文中说到,当使用一个外设时,必须先使能它的时钟。怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考《STM32F10x中文参考手册》“复位和时钟控制(RCC)”章节,其中有详细的寄存器介绍。固件库已经把时钟相关寄存器的使能配置都封装好,放在stm32f10x_rcc.c和stm32f 阅读全文
摘要:
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率。在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); 第一个参数是PLL时钟源选择 阅读全文
摘要:
时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行。时钟系统犹如人的心脏,一旦有问题整个系统就崩溃。我们知道STM32属于高级单片机,其内部有很多的外设,但不是所有外设都使用同一时钟频率工作,比如内部看门狗和RTC,它只需30KHz的时钟频率即可工作,所以内部 阅读全文
摘要:
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main。那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使用库函数编写的LED程序,在system_stm32f10x.c文件中可以找到SystemInit( 阅读全文
摘要:
要点亮LED,需要完成LED的驱动, 在工程模板上新建一个led.c和led.h文件,将其存放在led文件夹内。这两个文件需要我们自己编写。 通常xxx.c文件用于存放编写的驱动程序,xxx.h文件用于存放xxx.c内的stm32头文件、管脚定义、全局变量声明、函数声明等内容。 因此在led.c文件 阅读全文
摘要:
已经对启动文有了大致了解,再来看看系统在复位过程中做了哪些工作。复位程序如下: 1 ; Reset handler 2 3 Reset_Handler PROC 4 5 EXPORT Reset_Handler [WEAK] 6 7 IMPORT SystemInit 8 9 IMPORT __ma 阅读全文
摘要:
电路图分析 首先找来单片机的原理图,根据原理图进行相关的设计工作。 例如在上图中相同网络标号表示它们是连接在一起的,因此D1发光二极管阴极是连接在STM32的PC0管脚上,D2指示灯阴极连接在PC1管脚上,其他LED管脚以此类推。如果要使D1指示灯亮,只需要控制PC0管脚输出低电平, 如果要使D1指 阅读全文
摘要:
在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从“复位”到“开始执行 main 函数”中间这段启动时间所必须进行的工作。它完成的具体工作有: 初始化堆栈指针SP=_initial_sp 初始化PC指针=Reset_Handler 初始化中断向量表 配置系统时钟 调用C库函数_ma 阅读全文