STM32CubeMX教程-点亮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⼀样。

STM32Cube官方例程学习指南(Lu)

STM32Cube官方例程学习指南(Lu)

STM32Cube官方例程学习指南STM32CubeMX是ST官方提供的一个代码生成工具。

使用该工具,通过图形化的配置方法,就能快速生成STM32的各种片上外设的初始化代码。

CubeMX生成的软件工程使用HAL库,HAL库是ST 以后主推的外设驱动库。

另外CubeMX还提供了FATFS、FreeRTOS、LWIP、USB库等中间件的支持,配置之后生成软件工程,工程文件就包含了相应代码。

本文档以STM32F4系列为例,简要地分析官方提供的Cube例程。

希望能够帮助CubeMX初学者快速掌握STM32的常用外设使用方法。

文档不求全面,只讲常用的外设,对不常用的只进行概况性地描述。

同时,文档只对例程进行直接分析,不对其他文件进行详述。

第一部分准备工作首先是下载STM32CubeF4支持包,可以到与非网ST社区搜索STM32CubeF4,然后下载当前版本已经更新到V1.13.0。

点击附件中的STM32CubeF4,转到下载链接地址。

附件大小300M左右。

本人当前使用的是V1.9.0版本的,例程相差不大,后面就用V1.9.0版本的例程进行分析。

下载后解压,得到如下图的文件,其中例程放在Projects文件夹中:打开Projects文件夹,可以看到前12个文件夹分别官方提供的12款评估板,后面我们仅以STM324xG_EVAL评估板的例程为讲解内容。

STM324xG_EVAL文件夹中,Examples文件夹存放的就是片上外设的使用例程。

(Applications文件夹是STM324xG_EVAL相关的一些高级应用例程,如FreeRTOS、FatFs、LwIP、USB等,有一定基础之后可以学习这里面的内容。

本文不作分析。

)Examples文件夹提供了27个外设对应文件夹,每个文件夹包含若干个例程,后面将对常用的外设例程(不是全部)进行简要分析。

第二部分例程分析下面将挑选常用外设的例程进行分析,顺序是从简单的到复杂的。

怎么样用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口}}。

嵌入式led灯亮灭实验报告

嵌入式led灯亮灭实验报告

嵌入式led灯亮灭实验报告一、实验目的1. 学习嵌入式系统中GPIO的控制方法2. 掌握通过控制GPIO控制LED的亮灭二、实验器材1.STM32L4Discovery开发板2.LED灯3.杜邦线若干三、实验原理STM32L4Discovery开发板上集成了许多IO口,GPIO控制可使这些IO口实现不同的功能,包括输入信号的采集、输出信号的控制等。

本次实验主要通过对STM32L4Discovery开发板中硬件端口的控制,使得LED灯亮灭。

四、实验步骤1. 接线将LED灯的负极连接至GND,正极连接至开发板的一个GPIO口上,本次实验中我们选择PA5口。

2. 创建新工程首先打开STM32CubeIDE,创建新工程,选择自己所需要的板卡型号和工程名字以及存放在电脑上的路径。

完成基本的配置后,点击“Finish”按钮。

在弹出的窗口中选择“SW4STM32”作为开发环境,点击“OK”按钮。

至此,我们已经创建好了新的STM32工程。

3. 配置GPIO口在左侧的“Pinout&Configuration”中,我们可以看到PA5口是已经被配置为GPIO口了。

将其设置为输出GPIO口,在“Mode”下拉菜单中选择“GPIO Output”,“Pull”下拉菜单选择“ No Pull-up, No Pull-down ”,其他参数固定即可。

4. 编写控制程序5. 编译并下载程序点击工具栏上的“Hammer”按钮编译程序,寻找编译错误,并解决它们。

编译成功后,连接STM32L4Discovery开发板和电脑,点击工具栏上的“Play”按钮,下载程序至开发板进行运行。

五、实验结果程序运行成功后,LED灯开始绿色闪烁。

六、实验参考源码以下代码仅供参考,不可直接拷贝使用。

/* Private variables */GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT};const uint16_t GPIO_PIN[LEDn] = {LED1_PIN};const uint32_t GPIO_CLK[LEDn] = {LED1_GPIO_CLK};const uint32_t GPIO_SOURCE[LEDn] = {LED1_GPIO_AF};/* Private function prototypes */void LED_GPIO_Init(Led_TypeDef Led);/*** @brief Initialises the GPIO for the led* @param Led: Specifies the Led to be configured* @retval None*/void LED_GPIO_Init(Led_TypeDef Led){GPIO_InitTypeDef GPIO_InitStructure;/* Enable the GPIO_LED Clock */RCC_AHB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);/* Configure the GPIO_LED pin */GPIO_InitStructure.GPIO_Pin = GPIO_PIN[Led];GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure);while (1){GPIO_SetBits(GPIOA, GPIO_Pin_5);Delay(1000);GPIO_ResetBits(GPIOA, GPIO_Pin_5);Delay(1000);}}通过以上实验,我们学会了如何通过STM32L4Discovery开发板上的GPIO口来控制LED 灯的亮灭,并最终实现了LED灯的周期性亮灭。

使用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开发板连接到电脑上,通过串口与开发板进行通信,然后运行编译后的程序。

简单的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地址。

STM32+cubeMX+FreeRTOS学习(1)

STM32+cubeMX+FreeRTOS学习(1)

STM32+cubeMX+FreeRTOS学习(1)背景:最近项⽬要在STM32L152上移植FreeRTOS轻量级系统,本⽂将从FreeRTOS的⼊门知识讲起,记录FreeRTOS的⼀些基本知识点和学习⼼得。

硬件平台:STM32L152 ,备注:PA12连接LED1,PA11连接LED2;软件平台:keil v5和 cubeMx。

内容:1.FreeRTOS简介FreeRTOS是⼀种轻量级实时操作系统。

RTOS:Real Time OperatingSystem实时操作系统。

FreeRTOS可拆分为Free + RTOS,前⾯Free代表⼀种操作系统类型的名称,后⾯RTOS代表实时操作系统。

近⼏年,FreeRTOS的排名在嵌⼊式操作系统的排名中还是⽐较⾼的,且有不断上升趋势。

2. cubeMX中FreeRTOS的⽣成及任务创建⾸先,打开CUBEMX软件,点击NEW Project,选择芯⽚STM32L152RC;2,配置RCC时钟3,设置PA12和PA11为GPIO_OUTPUT;4,使能FREERTOS;5,设置时钟树,本例外部晶振8M,8倍频,2分频,得到32M;6,配置FREERTOS,创建两个任务;7,⽣成基于Keil V5的代码。

8,添加LED点亮和熄灭程序;编译运⾏,可以看到LED1和LED2 分别以不同的频率闪烁。

下⾯重点分析⽣成的代码:下⾯分析MX_FREERTOS_Init()函数;void MX_FREERTOS_Init(void){osThreadDef(Task_LED1, Func_LED1, osPriorityNormal, 0, 128);//宏定义,定义了⼀个名为os_thread_def_Task_LED1的osThreadDef_t类型结构体,并赋值给各个成员变量。

Task_LED0Handle = osThreadCreate(osThread(Task_LED1), NULL);//创建了LED1任务osThreadDef(Task_LED2, Func_LED2, osPriorityNormal, 0, 128);//宏定义,定义了⼀个名为os_thread_def_Task_LED2的osThreadDef_t类型结构体,并赋值给各个成员变量。

stm32单片机设计定时器中断实现1s的led灯闪烁知识应用

stm32单片机设计定时器中断实现1s的led灯闪烁知识应用

stm32单片机设计定时器中断实现1s的led灯闪烁知识应用要实现1s的LED灯闪烁,可以使用STM32单片机的定时器中断来控制LED的开关。

以下是实现的步骤:1. 配置定时器:选择一个定时器(如TIM2)并设置适当的预分频和计数值,以实现1s的定时周期。

2. 配置中断:使能定时器中断,并将中断优先级设置为适当的值(较高优先级)。

3. 初始化LED引脚:将LED引脚设置为输出,并初始化为高电平(LED关闭)。

4. 编写中断处理程序:在中断处理程序(如TIM2_IRQHandler)中,切换LED引脚的状态。

例如,如果LED引脚当前为高电平,则将其设置为低电平,反之亦然。

5. 启动定时器:启动定时器以开始定时。

整个步骤如下所示的代码示例:```c#include "stm32fxx.h"void TIM2_IRQHandler(void){if(TIM2->SR & TIM_SR_UIF){TIM2->SR &= ~TIM_SR_UIF; // 清除中断标志位// 切换LED引脚状态if(GPIOC->ODR & GPIO_ODR_ODR0)GPIOC->ODR &= ~GPIO_ODR_ODR0; // 关闭LEDelseGPIOC->ODR |= GPIO_ODR_ODR0; // 打开LED}}int main(){// 初始化LED引脚RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; // 使能GPIOC时钟GPIOC->MODER |= GPIO_MODER_MODER0_0; // 将PC0设置为输出模式GPIOC->OSPEEDR |= GPIO_OSPEEDR_OSPEED0; // 设置PC0输出速度// 配置定时器RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // 使能TIM2时钟TIM2->PSC = 8399; // 将预分频设置为8400-1,得到10kHz 的计数频率TIM2->ARR = 9999; // 将计数值设置为10000-1,得到1s的定时周期// 配置中断TIM2->DIER |= TIM_DIER_UIE; // 使能更新中断NVIC_EnableIRQ(TIM2_IRQn); // 使能TIM2中断NVIC_SetPriority(TIM2_IRQn, 0); // 设置TIM2中断优先级为最高// 启动定时器TIM2->CR1 |= TIM_CR1_CEN; // 启动TIM2定时器while(1){// 程序主循环}return 0;}```以上代码使用了TIM2定时器和PC0引脚作为LED灯的控制。

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

左边功能选择后, 管脚会变成绿色
因为我们这里只是点灯一个简单动作,所以外设功能选择 RCC。 2.GPIO 口功能选择 GPIO 口 的 功 能 选 择 在 这 里 面 使 用 起 来 很 简 单 。 比 如 说 我 的 板 子 是 PG6,PG8,PC7 作为 LED1,LED2,LED3 的 IO 口,那么我直接找到相对应的 IO 口, 则会弹出该 IO 口所能设置的所有选项:
Keil 工程名字 Keil 项目位置 图形配置文件位置 重要,生成编译器选项 请选择编译平台,不能 低于选项中的版本号
3. 代码生成设置
按照上面的勾选即可。
生成过程有点久,我是不是 该换电脑了…
用上面设置的编译器 打开即可
至此,用 STMCubeMX 新建一个点灯工程到此结束。虽然上面的步骤看起 来很多,实际上我们只需要用鼠标点击几下即可。生成的工程文件里面,时 钟和 GPIO 相关配置代码已经自动生成,是不是很强大很省心呢。在配置正 确的情况下,我们的精力得到了释放,可以更加专注了具体功能的实现了。
左键点击 GPIO 口,会 弹出功能选择。这里选 择 GPIO_Output 模式
选择 GPIO_Output 即可。同理将 PG6,PG8 设置成 GPIO_Output 即可。
左边的黄色警告指的是该功能的 GPIO 已经被映射作用其他功能了,可以忽 略。
Step 3:时钟配置(Clock Configuration)
1.RCC 设置:
RCC,选择 HSE,我用的板子是外接晶振,所以选择第三项。 1. 2. 3. Disable:使能外部时钟 BYPASS Clock Source:旁路时钟 Crystal/Ceramic Resonator: 晶体/陶瓷谐振器
选择使能 RCC 之后,右边的 MCU 相对应的管脚会自动变成绿色,说明该管脚 已经被使用:
Step 5:低功耗计算(power consumption calculator)
该 功 能 针 对 F0 , L 系 列 低 功 耗 MCU , 这 里 不 需 要 理 会 。
该选项不需要任何设置
Step 6:保存配置和输出到工程目录
1. 保存配置(两个保存图标功能一样)
2. 根据用户的设置生成的源代码
如上图所示: M 表示 PLLM; N 表示 PLLN; P 表示 PLLP; 那么我们来看看数据手册来确认一下它们为什么要设置成这些数字,设置其 他的可不可呢? 下面是 RCC PLL 配置寄存器的相关说明:
由上面我们得出这些结论: PLLM:主 PLL (PLL) 和音频 PLL (PLLI2S) 输入时钟的分频系数,PLL 的设 置是对 PLL 输入时钟源 HSE 进行分频系数, 而这个系数在寄存器说明里面特别强 调说来了,HSE 进入 PLL 的频率(VCO 输入频率)要介于 1 和 2MHz 之间: VCO 输入频率 = PLL 输入时钟频率 / PLLM 并且 2 PLLM 63 从这里我们就很清楚为啥 PLLM 要设置成 25 了,HSE 输入频率 25MHz 经过 25 分频变成了 1MHz,同理,如何用户的外部晶振为 16MHz,那么 PLLM 则选择 16 或者 8 都可以,建议尽量让 PLL 的输入频率为 1MHz,这样方便产生精确的震荡 方波。 PLLN:适用于 VCO 的主 PLL (PLL) 倍频系数。这里的计算公式为:VCO 输 出频率 = VCO 输入频率 × PLLN 并且 192 PLLN 432。 从这里我们只能单纯地知道 PLLN 的范围,但是不知道为什么是 336 而不是
Clock Configuration 配置完全采用图形方式,只要了解了 RCC 的配置原理 你会觉得这种方式实在是太强大了,后面会有介绍。具体框图如下:
F G B A E C D E
A:Input Frequency B:PLL Source Mux C:PLLM D:PLLN E:PLLP F:System Clock Mux G:APB1/APB2 Perscaler 为什么要这样设置,自己可以去看 STM32F4 系列参考手册。我在后面会详细 说明。
那么下面的图示,大家可以根据上面的思路去思考一下。
APB1 Divider 为啥要 4 分频,APB2 Divider 为何要 2 分频,请对照用户手 册来比较推算一下。这些总线数值都可以在复位和时钟控制(RCC)这部分可以找 到答案。
Step 4:深入配置(Configuration)
系统功能细化 设置。包括 NVIC,GPIO 详 细设置等等
在这里我们只用到 GPIO 口,点击进入 GPIO 详细设置。如图:


Modified 选 项下面会出 现 IO 口的详 细信息
GPIO 详 细设置
GPIO 模式选择
GPIO 上拉下拉选择 GPIO 输出速度
附录:TMcubeMX 设置 STM32F407 系列 RCC 说明
High Speed Clock(HSE):外部高速时钟,其中有三个选项,分别是: 1. Disable:使能外部时钟 2. BYPASS Clock Source:旁路时钟 3. Crystal/Ceramic Resonator: 晶体/陶瓷谐振器(一般选择该选项) Low Speed Clock(LSE):外部低速时钟。分别是: Disable:使能外部时钟 BYPASS Clock Source:旁路时钟 Crystal/Ceramic Resonator: 晶体/陶瓷谐振器 总体框图如下:
GPIO mode:Output Push Pull 推挽输出(已选择) Output Open Drain 开漏输出 GPIO Pull-up/Pull-dowm: NO pull-up and no pull-down 没有上下拉 pull-up 上拉(已选择) pull-down 下拉 Maximum output speed: Low 慢 Medium 中 Fast 快 High 高(已选择) 大家可以根据自己的板子情况设置相关参数。 上面是我的 GPIO 口详细设置,因为忘记将设置的界面截图了。

根据数据手册得知 STM32F407 系列,系统时钟 HCLK 最大值 = 168 MHz。即 SYSCLK=168M。这里我们倒推回去,168=X/PLLP(单位:MHz) ,并且 PLLP = 2、 4、 6 或 8。当 PLLP=8 是,VCO=1344=1*PLLN, 并且 192 PLLN 432,显然 不成立。我们依次将 PLLP=6、4、2 带入上面的公式进行计算,唯有 2 是满足条 件的。当 PLLP 为 2 是,PLLN=336.至此我们得知 M、N、P 的值了。 上面的所有公式在 STM32F4 用户手册都有详细的说明,大家可以自行对照推 算 一 下
Step 1:工程建立
打开 STM32CubeMX,点击 New Project,并选择对应的 MCU:
2. 选 择 MCU 双 击
1.点击新建
双 外设 功能选择
MCU 管脚图,在这 里可以设置 GPIO 的 基本功能
Step 2:外设功能选择(Pinout)
前提: 使用 STM32 系列 MCU 很强大的辅助工具, 最直接的图形配置和 最新的库函数支持,最简单 KEIL 工程的建立。
STM32CubeMX 最新版增加了对 STM32F1 系列 MCU 的支持,我的例程是以 STM32F4077IGXX 为准,其他的 STM32 系列的 MCU 设置也是大同小异的。本文乃 闲时兴起所作,多有瑕疵,让大家见笑了。
其他的。为了解决这个问题,我们还得了解 PLLP。 PLLP:适用于主系统时钟的主 PLL (PLL) 分频系数。它的计算公式为:PLL 输出时钟频率 = VCO 频率 / PLLP 并且 PLLP = 2、 4、 6 或 8。事实上,大 家 可 以 从 框 图 看 出 来 , 经 过 PLLP 之 后 就 是 系 统 时 钟 了 。
相关文档
最新文档