教你用STM32一步一步点亮led灯

合集下载

教你用STM32一步一步点亮led灯

教你用STM32一步一步点亮led灯

教你⽤STM32⼀步⼀步点亮led灯STM32之⼀步⼀步点亮led (2011-05-09 19:40)标签: stm32led v3.4MDK 4.12⼊门分类:stm32⼊⼿stm32以来,⼀直想快速上⼿,所以在各⼤论坛闲逛,各个达⼈的blog上学习,正所谓欲速则不达,⼼急是吃不了热⾖腐的!有⽊有?最终决定使⽤st官⽹的库开发,据⼤侠们写道使⽤库可以快速上⼿,貌似的确如此,⼀个个教程写的那么好,直接拿过来⽤就是了。

可是那么多个库,聪明的你请告诉到底选择哪⼀个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后⽤的是v3.4的库,是很⽅便!切⼊正题,点亮LED。

硬件:红⽜开发板,STM32F103ZET6(144封装).软件:RealView MDK 4.12stm32固件库:v3.4 附上⾃⼰整理后的库: V3.4_clean.rar根据官⽹库⾃⼰整理了下,新建了⼯程模板如下图:(主要参考⽂章《在Keil MDK+环境下使⽤STM32 V3.4库.pdf》)在KeilMDK+环境下使⽤STM32V3.4库.pdf⼊图所⽰:新建⼀个⽬录01_ProLed,建议放在英⽂路径下,避免不必要的⿇烦。

将上⾯的库v3.4解压到此⽬录,再新建⼀个project⽬录,存放⼯程。

说明:CMSIS:最底层接⼝。

StartUp:系统启动⽂件。

StdPeriph_Lib:stm32外围设备驱动⽂件。

Project:⼯程⽂件。

User:⽤户⽂件。

新建⼯程步骤:此处略去300字。

简单说明:1.core_cm3.c/core_cm3.h该⽂件是内核访问层的源⽂件和头⽂件,查看其中的代码多半是使⽤汇编语⾔编写的。

在线不甚了解。

--摘⾃《在Keil MDK+环境下使⽤STM32 V3.4库》2.stm32f10x.h该⽂件是外设访问层的头⽂件,该⽂件是最重要的头⽂件之⼀。

就像51⾥⾯的reg51.h⼀样。

STM32 LL 库使用指南说明书

STM32 LL 库使用指南说明书

STM32 LL库使用指南---By Fengzi熟悉STM32的都知道ST官方提供了非常方便好用的库函数供用户使用,多数人都使用过STM32标准外设库,STM32Cube库(即HAL库),这个LL库是什么鬼,却从来没听说过。

好吧,我承认这个名字是我自己XJB取的。

目录一、初识LL 库 (1)二、怎么使用LL库 (3)三、新建STM32LL库工程模板 (5)四、第一个程序——点亮LED (8)五、添加其他程序功能 (10)………………………………………………………………………………………………………………………………………………….一、初识LL 库最近论坛发的STM32L476RG Nucleo开发板到手了,准备学习玩耍,当然第一步就是下载资料,于是我下载STM32L4Cube 1.1.0版本,打开逐个查看,好像和以前一样的,没什么特别嘛,于是准备开始开发。

等等,好像还真发现了有点不一样:熟悉HAL库的都知道,该库的文件几乎都是以stm32xxx_hal_xxx.h/.c命名的,为了和以前的标准库有个区分,上图中那些是什么鬼前辈说,遇到问题赶紧查手册,于是我果断打开STM32L4Cube库的说明手册(UM1884):原来这个东西叫做Low Layer APIs,作为英文渣渣表示实在不习惯洋里洋气的高大上名字,于是擅自把他叫做【STM32LL库】了(不服的你咬我啊)。

从这里看好像是说这个东东比HAL库更接近硬件,到底什么鬼,还不清楚。

但是以前好像没见过这个东西啊,就算是STM32L4Cube的1.0.0版本中都没有。

看看Cube发行历史:原来LL库是在1.1.0版本才加上的,大概意思就是:1.LL APIs是寄存器级的编程,嗯,也就是说我们常说的直接操作寄存器吧。

2.LL APIs适用于xxx等一大堆外设3.LL APIs函数全部定义为static inline函数,放在对应的头文件中,用户使用需要包含相关头文件4.参考这两个文档看看LL库文件在Cube库中的位置,有20多个文件,全部以stm32l4xx_ll_xxx.h命名:STM32Cube_FW_L4_V1.1.0\Drivers\STM32L4xx_HAL_Driver\IncSTM32L4是面向低功耗市场的,同时不失高性能,功耗和性能往往是两个矛盾的东西,ST在硬件设计上想了各种办法来实现兼顾低功耗高性能(例如各种低功耗模式,LP外设等),而在软件层面,程序也讲求效率,LL库全是直接操作寄存器,直接操作寄存器往往效率较高,而且函数定义为内联函数,调用函数时不是堆栈调用,而是直接把函数的代码嵌入到调用的地方,利于提高代码相率,我想这也是ST在STM32L4系列中推出这个直接操作寄存器的LL库的原因之一吧。

stm32电灯最简单代码

stm32电灯最简单代码

stm32电灯最简单代码在学习STM32单片机时,我们常常会选择最简单的例子进行学习和实践。

其中之一就是通过STM32实现一个简单的电灯控制,下面就是这个最简单的STM32电灯控制代码。

首先,需要在工程中添加头文件和宏定义:```#include 'stm32f10x.h'#define LED GPIO_Pin_13```其中,stm32f10x.h是STM32标准库中的头文件,GPIO_Pin_13表示LED所在引脚的编号。

然后,需要进行GPIO的初始化:```GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = LED;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);```其中,RCC_APB2PeriphClockCmd是时钟使能函数,将GPIOC的时钟开启;GPIO_InitStructure是GPIO初始化结构体,其中GPIO_Pin表示要初始化的引脚,GPIO_Mode表示引脚模式为输出模式,GPIO_Speed表示引脚速度为50MHz,GPIO_Init表示初始化。

最后,就是控制LED灯的代码:```while(1){GPIO_SetBits(GPIOC, LED); //LED亮Delay(0xFFFFF);GPIO_ResetBits(GPIOC, LED); //LED灭Delay(0xFFFFF);}```其中,GPIO_SetBits表示将LED引脚设置为高电平,GPIO_ResetBits表示将LED引脚设置为低电平,Delay是延时函数,0xFFFFF表示延时时间。

怎么样用KEIL新建STM32工程并点亮LED灯

怎么样用KEIL新建STM32工程并点亮LED灯

KEIL新建STM32工程并点亮LED灯Ray_Zhang 1、新建工程,保存后会弹出芯片选型对话框,如图1。

图1 新建工程芯片选型保存后弹出对话框,是否要自动建立与芯片有关的驱动。

如图2图2 建立驱动选是,会出现图3:图3 建好的工程分别加入文件,如图4,除了main文件以外,都是别人搞好的,太方便了吧。

图4 添加文件修改以后的图3变为如图5图5 修改以后的工程把所要用的库文件考到一个文件夹里面,方便以后配置,如图6,这些都头文件都不需要自己写。

图6进一步配置程序,如图7,前面不怎么注意的配置就没有标出来了图7 将要添加的库文件加到这里在最后一栏里一定要点setting,不会在下载的时候会报错,如图8图8 配置下载程序框图如果报错如图9的对话框,那说明图8没设置好。

图9 报错对话框2.程序#include "stm32f10x.h" //定义启动设置,以及所有寄存器宏定义GPIO_InitTypeDefGPIO_InitStructure;// 初始化GPIO口,定义了一个名字为GPIO_InitStructure的结构体,而此结构体相当于继承了GPIO_InitYypeDef,在下面直接继承了其字段并赋值。

u32 i=0; // 定义延时参量int main(void){SystemInit(); //系统时钟配置函数通过不同的定义来选择不同的主频这里设置是72m RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开功能时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化IO口while (1){for(i=0;i<=0x1ffff;i++);GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置高IO口for(i=0;i<=0x1ffff;i++);GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置低io口}}。

IAR_for_stm32_新建工程点亮LED[技巧]

IAR_for_stm32_新建工程点亮LED[技巧]

IAR for arm 4.42A 应用笔记学习stm32我选择的用的编译器IAR for arm 4.42A,因为开始用的这个吧,习惯了,我感觉,用什么编译器,都一样,程序还是要自己写的,别的东西永远是别人的,拿到自己手里,才是自己的;用IAR调stm32,我首先想到的是用stm32f103驱动一个LED,让他亮起来;接着调中断,接着调各种总线(SPI、SDIO、FSMC、UART、CAN、USB),这些会了,估计什么外围器件都能接上了。

第一章建工程点亮LED1.建工程:这里说下我怎样建的工程:点击如果错过了这个界面点Project——Creat New Project…点,取个名字就可以保存了;有了新的工程点下,保存为.C 文件;再在工程上右击——Add——Add Files..;把我们.C文件加进去;下面是最重要的一部,配置Option;右击工程,点出Option 界面;这里主要配置的几项有://General Options;//C/C++Compiler;//Linker;//Debugger;(1)Option 中的Target 选择我们所用的芯片型号;(2)C/C++Compiler中的Preprocessor输入我们的.h 文件的路径;说明:$PROJ_DIR$\带表的工程序所在的目录;在这个位置的基础上来添加我们的目录。

如:我们在E盘下建了一个文件夹(My_Project)放我们的工程;我把点.h文件放在E:\My_Project \User\inc里面,我们就可以把目录写成$PROJ_DIR$\user\inc;这样方便我的工程随便移动位置;(3)Linker下的Output设置如下:Extra Output设置如下:Config设置如下:说明:这个xcl是我们的flash配置文件,IAR4.42用的xcl文件,高版本的IAR已改为.icf文件,作用是一样的,加载进去就行;(4)Debugger中的Setup先择所用的调试工具,选上run to main;Download中有一项。

使用STM32F103系列芯片点亮LED流水灯(STM32入门)

使用STM32F103系列芯片点亮LED流水灯(STM32入门)

使用STM32F103系列芯片点亮LED流水灯(STM32入门)STM32F103系列芯片是意法半导体(STMicroelectronics)推出的一款32位ARM Cortex-M3内核的微控制器。

本文将介绍如何使用STM32F103系列芯片点亮LED流水灯,从而帮助初学者入门STM32首先,我们需要准备以下材料和工具:1. STM32F103系列开发板(如:STMicroelectronics的STM32F103C8T6开发板)B转串口模块3.杜邦线和杜邦线母头4.面包板(可选)5.电脑接下来,我们将一步一步地进行操作。

第一步,准备环境:2.将USB转串口模块连接到STM32开发板上,用于通过串口与电脑进行通信。

第二步,编写代码:在STM32CubeIDE中创建一个新项目,并选择适合的开发板型号和启动文件。

然后,将以下代码复制到main.c文件中:```#include "stm32f1xx.h"void delay(int n)for(int i=0; i<n; i++);int main(void)GPIOC->CRH &= 0xFF0FFFFF; // Clear PC13 configurationwhile(1)// Turn on the LED// Delay// Turn off the LED// Delay}```第三步,编译和烧录:在STM32CubeIDE中,使用编译工具将代码编译成可执行文件。

然后,通过USB转串口模块将编译后的可执行文件烧录到STM32开发板中。

第四步,连接LED:在STM32开发板上找到PC13引脚,将LED的长针连接到PC13引脚上,将LED的短针连接到开发板的地线上。

可以使用面包板或杜邦线连接器来连接LED和开发板。

第五步,运行程序:将STM32开发板连接到电脑上,通过串口与开发板进行通信,然后运行编译后的程序。

单片机点亮led灯代码

单片机点亮led灯代码

单片机点亮led灯代码单片机(Microcontroller)是一种集成了处理器、存储器和输入/输出接口的微型计算机系统。

它广泛应用于各种电子设备中,包括家用电器、汽车电子、通信设备等。

而点亮LED灯是单片机学习的第一步,也是最基础的实验之一。

本文将介绍如何使用单片机点亮LED灯的代码及其原理。

一、硬件准备要点亮LED灯,首先需要准备以下硬件设备:1. 单片机开发板:如Arduino、STM32等。

2. LED灯:可选择不同颜色的LED灯,如红色、绿色、蓝色等。

3. 电阻:用于限流,一般选择220欧姆的电阻。

二、连接电路1. 将LED的正极连接到单片机的输出口,一般为IO口。

2. 将LED的负极连接到电阻上。

3. 将电阻的另一端连接到单片机的地(GND)。

4. 确保连接正确无误后,即可进行代码编写。

三、编写代码在单片机开发环境中,可以使用C语言或者类似的高级语言进行编程。

下面以Arduino为例,展示如何编写点亮LED灯的代码。

```Cvoid setup() {pinMode(13, OUTPUT); // 将13号引脚设置为输出模式}void loop() {digitalWrite(13, HIGH); // 设置13号引脚输出高电平delay(1000); // 延时1秒digitalWrite(13, LOW); // 设置13号引脚输出低电平delay(1000); // 延时1秒}```四、代码解析1. `pinMode(13, OUTPUT);`语句将13号引脚设置为输出模式,以便控制LED灯的亮灭。

2. `digitalWrite(13, HIGH);`语句将13号引脚设置为高电平,LED灯将亮起。

3. `delay(1000);`语句使程序延时1秒。

4. `digitalWrite(13, LOW);`语句将13号引脚设置为低电平,LED 灯将熄灭。

5. `delay(1000);`语句再次使程序延时1秒。

简单的STM32汇编程序—闪烁LED

简单的STM32汇编程序—闪烁LED

简单的STM32汇编程序—闪烁LED要移植操作系统,汇编是道不得不跨过去的坎。

所以承接上篇的思路,我准备⽤汇编写⼀个简单的闪烁LED灯的程式。

以此练习汇编,为操作系统做准备。

第⼀步,还是和上篇⼀样,建⽴⼀个空的⽂件夹。

第⼆步,因为是要⽤汇编来写程式,所以不需要启动代码,这⾥选择否。

第三步,建⽴⼀个.s⽂件,并把⽂件添加到⼯程中。

第四步,在LED.s⽂件中添加如下代码。

LED0 EQU 0x422101a0RCC_APB2ENR EQU 0x40021018GPIOA_CRH EQU 0x40010804Stack_Size EQU 0x00000400AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_spAREA RESET, DATA, READONLY__Vectors DCD __initial_sp ; Top of StackDCD Reset_Handler ; Reset HandlerAREA |.text|, CODE, READONLYTHUMBREQUIRE8PRESERVE8ENTRYReset_HandlerBL LED_InitMainLoop BL LED_ONBL DelayBL LED_OFFBL DelayB MainLoopLED_InitPUSH {R0,R1, LR}LDR R0,=RCC_APB2ENRORR R0,R0,#0x04LDR R1,=RCC_APB2ENRSTR R0,[R1]LDR R0,=GPIOA_CRHBIC R0,R0,#0x0FLDR R1,=GPIOA_CRHSTR R0,[R1]LDR R0,=GPIOA_CRHORR R0,R0,#0x03LDR R1,=GPIOA_CRHSTR R0,[R1]MOV R0,#1LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}LED_ONPUSH {R0,R1, LR}MOV R0,#0LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}LED_OFFPUSH {R0,R1, LR}MOV R0,#1LDR R1,=LED0STR R0,[R1]POP {R0,R1,PC}DelayPUSH {R0,R1, LR}MOVS R0,#0MOVS R1,#0MOVS R2,#0DelayLoop0ADDS R0,R0,#1CMP R0,#330BCC DelayLoop0MOVS R0,#0ADDS R1,R1,#1CMP R1,#330BCC DelayLoop0MOVS R0,#0MOVS R1,#0ADDS R2,R2,#1CMP R2,#15BCC DelayLoop0POP {R0,R1,PC}; NOPEND///////////////////////////////////////////////////////代码的简单讲解1,预定义LED0 EQU 0x422101a0 ;PA8的Bit-Bond地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32之一步一步点亮led (2011-05-09 19:40)标签: stm32led v3.4MDK 4.12入门分类:stm32入手stm32以来,一直想快速上手,所以在各大论坛闲逛,各个达人的blog上学习,正所谓欲速则不达,心急是吃不了热豆腐的!有木有?最终决定使用st官网的库开发,据大侠们写道使用库可以快速上手,貌似的确如此,一个个教程写的那么好,直接拿过来用就是了。

可是那么多个库,聪明的你请告诉到底选择哪一个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后用的是v3.4的库,是很方便!切入正题,点亮LED。

硬件:红牛开发板,STM32F103ZET6(144封装).软件:RealView MDK 4.12stm32固件库:v3.4 附上自己整理后的库: V3.4_clean.rar根据官网库自己整理了下,新建了工程模板如下图:(主要参考文章《在Keil MDK+环境下使用STM32 V3.4库.pdf》)在KeilMDK+环境下使用STM32V3.4库.pdf入图所示:新建一个目录01_ProLed,建议放在英文路径下,避免不必要的麻烦。

将上面的库v3.4解压到此目录,再新建一个project目录,存放工程。

说明:CMSIS:最底层接口。

StartUp:系统启动文件。

StdPeriph_Lib:stm32外围设备驱动文件。

Project:工程文件。

User:用户文件。

新建工程步骤:此处略去300字。

简单说明:1.core_cm3.c/core_cm3.h该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。

在线不甚了解。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》2.stm32f10x.h该文件是外设访问层的头文件,该文件是最重要的头文件之一。

就像51里面的reg51.h一样。

例如定义了 CPU是哪种容量的 CPU,中断向量等等。

除了这些该头文件还定义了和外设寄存器相关的结构体,例如:1.typedef struct2.{3. __IO uint32_t CR;4. __IO uint32_t CFGR;5. __IO uint32_t CIR;6. __IO uint32_t APB2RSTR;7. __IO uint32_t APB1RSTR;8. __IO uint32_t AHBENR;9. __IO uint32_t APB2ENR;10. __IO uint32_t APB1ENR;11. __IO uint32_t BDCR;12. __IO uint32_t CSR;13.14.#ifdef STM32F10X_CL15. __IO uint32_t AHBRSTR;16. __IO uint32_t CFGR2;17.#endif /* STM32F10X_CL */18.19.#if defined (STM32F10X_LD_VL)|| defined (STM32F10X_MD_VL)||defined (STM32F10X_HD_VL)20. uint32_t RESERVED0;21. __IO uint32_t CFGR2;22.#endif /*STM32F10X_LD_VL ||STM32F10X_MD_VL ||STM32F10X_HD_VL */23.} RCC_TypeDef;包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的 main 源文件)只需要包含stm32f10x.h即可,而不是以前固件库的需要包含 stm32f10x_conf.h这个头文件。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》3.system_stm32f10x.c/h该头文件也可以称为外设访问层的头文件和源文件。

在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是 SystemInit()了,这个后面会详细介绍。

总之这两个文件是新固件库的重点,有了它粮也大大简化了使用 stm32的初始化工作。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》4.stm32f10x_conf.h这个文件和 V2 版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。

例如需要使用 GPIO功能,但不使用 SPI功能,就可以这样操作。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》1.#include"stm32f10x_gpio.h"2./*#include"stm32f10x_spi.h"*/5.main.c这个文件就不用多说了,自己编写。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》6.stm32f10x_it.c/h这两个文件包含了 stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了 ARM内核的几个异常中断,其他的中断函数需要用户自己编写。

--摘自《在Keil MDK+环境下使用STM32 V3.4库》OK,开始写代码了。

由于3.4的库在启动的时候已经设置好时钟了(将在后面有讲述),所以我们只需设置好对应的GPIO即可。

查看硬件连接:来点亮PF6.新建led.c与led.h,添加到User Code下面。

led.h1.#ifndef _LED_H_2.#define _LED_H_3.4.void Delay(uint32_t times);5.void LedInit(void);6.7.#endifled.c1.#include "stm32f10x.h"2.3./************************************************************************4.5.*函数名:LedInit(void)6.7.*描述:8.9.*输入:无10.11.*输出:无12.13.*返回:无14.15.************************************************************************/16.17.void LedInit(void)18.{19. GPIO_InitTypeDef GPIO_InitStructure;20.21./*初始化 GPIOF的 Pin_6为推挽输出*/22. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;23. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;24. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;25. GPIO_Init(GPIOF,&GPIO_InitStructure);26.27.}28.29./************************************************************************30.31.*函数名:Delay(uint32_t times)32.33.*描述:延时函数34.35.*输入:uint32_t times36.37.*输出:无38.39.*返回:无40.41.************************************************************************/42.void Delay(uint32_t times)43.{44.while(times--)45.{46. uint32_t i;47.for(i=0; i<0xffff; i++)48.;49.}50.}在main.c中加入led初始化与点亮关闭即可。

1./*!< At this stage the microcontroller clock setting is alreadyconfigured,2. this is done through SystemInit()function which is calledfrom startup3. file (startup_stm32f10x_xx.s) before to branch toapplication main.4.To reconfigure the default setting of SystemInit()function,refer to5. system_stm32f10x.c file6.*/7.8./* Add your application code here9.*/10.11./*初始化 GPIOF时钟*/12. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);13.14. LedInit();15.16./* Infinite loop*/17.while(1)18.{19./*关闭 LED1*/20. GPIO_SetBits(GPIOF,GPIO_Pin_6);21./*延时*/22. Delay(50);23./*点亮 LED1*/24. GPIO_ResetBits(GPIOF,GPIO_Pin_6);25./*延时*/26. Delay(50);27.}认真学习下这段代码,其实也非常简单,参考自《在Keil MDK+环境下使用STM32 V3.4库》。

我想请大家注意的是前面的一段英文注释,这段英文注释什么意思呢。

“在运行 main 函数之前,系统时钟已经完成初始化工作,在main 函数之前,通过调用启动代码运行了 SystemInit函数,而这个函数位于system_stm32f10x.c”。

根据文中的提示我们回到 system_stm32f10x.c 看看SystemInit如何初始化系统的。

在 system_stm32f10x.c 的开头便定义了系统的时钟频率,从下面的这段代码可以看出系统的频率被定义为 72MHZ,这也是绝大多数 STM32运行时的频率。

1.#if defined (STM32F10X_LD_VL)||(defined STM32F10X_MD_VL)||(defined STM32F10X_HD_VL)2./* #define SYSCLK_FREQ_HSE HSE_VALUE */3. #define SYSCLK_FREQ_24MHz 240000004.#else5./* #define SYSCLK_FREQ_HSE HSE_VALUE */6./* #define SYSCLK_FREQ_24MHz 24000000 */7./* #define SYSCLK_FREQ_36MHz 36000000 */8./* #define SYSCLK_FREQ_48MHz 48000000 */9./* #define SYSCLK_FREQ_56MHz 56000000 */10.#define SYSCLK_FREQ_72MHz 7200000011.#endif紧接着根据这个宏定义程序试图把系统时钟初始化为 72MHz,代码有点冗长,这里就不一一列出。

相关文档
最新文档