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灯的控制。

STM32开发板按键控制实验-STM32CubeMX之定时器控制微秒延时

STM32开发板按键控制实验-STM32CubeMX之定时器控制微秒延时

STM32开发板按键控制实验/STM32CubeMX之定时器控制微秒延时实验说明通过按键控制LED灯的开关实验环境硬件:STM32F407-PZ6808L开发板STM32仿真器软件:Winddows7 64位操作系统内存8GBKeil5安装后需要添加Keil.STM32F4xx_DFP.2.7.0.packStm32CubeMx安装后将STM32Cube_FW_F4_V1.13.0文件夹复制到C: \ Users \ Administrator \ STM32Cube \ Repository文件夹中。

文档:STM32F407-PZ6808L开发板原理图.pdf实验现象按开发板上的K_RIGHT键D2灯亮,按K_DOWN键D2灯灭。

实验步骤1.打开STM32F407-PZ6808L开发板原理图找到LED灯模块D2链接引脚LED2LED2 低电平灯亮高电平灯灭找到LED2 在STM32F407ZGT6核心板的链接引脚在PDF阅读器上搜索找到LED2引脚引脚为PF10查找按键K_RIGHT和K_DOWN在核心板上的引脚先查找按键模块分别对应K1和K2然后在核心板上查找K1和K2的引脚名称名称是PE2和PE3分析:按下K1则D2灯亮,按下K2则D2灯灭。

K1和K2按下后,引脚是低电平。

判断PE2和PE3引脚的信号来确定K1和K2是否按下,若为低电平,在为按下,若为高电平,则为放开。

PE2和PE2引脚为输入类型。

PF10引脚为输出类型2.打开STM32CubeMX建立工程(1)设置类型STM32F407ZGTx LQFP144(2)设置引脚类型Peripherals->SYS->Debug设置为Serial Wire(仿真使用)注意:一定设置,否则以后不能使用仿真器。

找到PF10,由于是控制LED灯,设置为输出类型(GPIO_Output),同理,设置PE2和PE3类型,为GPIO_Input(3)对PE2和PE3mode进行设置依次选择【Configuration】——GPIO将GPIO Pull-up/Pull-down设置为Pull-up(4)设置工程Project Settings->Project Name设置为KEYToolchain /IDE 设置为MDK-ARM V5通过向导,自动生成初始化代码,然后通过Keil5打开工程3.先编译工程在main.c中添加代码uint8_t Check_Key(){if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_2)==GPIO_PIN_RESET || HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_2)==GPIO_PIN_RESET){return 1;}if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)==GPIO_PIN_RESET){return 2;}}return 0;}在main函数中uint8_t key;key=Check_Key();switch(key){case 1:HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);break;case 2:HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);break;}编译4.链接仿真器仿真调试然后按开发板上的复位键,测试。

STM32入门系列-使用库函数点亮LED,LED初始化函数

STM32入门系列-使用库函数点亮LED,LED初始化函数

STM32⼊门系列-使⽤库函数点亮LED,LED初始化函数 要点亮LED,需要完成LED的驱动,在⼯程模板上新建⼀个led.c和led.h⽂件,将其存放在led⽂件夹内。

这两个⽂件需要我们⾃⼰编写。

通常xxx.c⽂件⽤于存放编写的驱动程序,xxx.h⽂件⽤于存放xxx.c内的stm32头⽂件、管脚定义、全局变量声明、函数声明等内容。

 因此在led.c⽂件内编写如下代码:#include "led.h"/******************************************************************************** 函数名 : LED_Init* 函数功能 : LED 初始化函数* 输⼊ : ⽆* 输出 : ⽆*******************************************************************************/void LED_Init(){GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量RCC_APB2PeriphClockCmd(LED_PORT_RCC,ENABLE);GPIO_InitStructure.GPIO_Pin=LED_PIN; //选择你要设置的 IO ⼝GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率GPIO_Init(LED_PORT,&GPIO_InitStructure); /* 初始化 GPIO */GPIO_SetBits(LED_PORT,LED_PIN); //将 LED 端⼝拉⾼,熄灭所有 LED}函数中的LED_PORT_RCC、LED_PIN和LED_PORT是我们定义的宏,其存放在led.h头⽂件内。

stm32cubemx使用教程

stm32cubemx使用教程

stm32cubemx使用教程STMCubeMX 是STMicroelectronics官方提供的一款MCU配置工具,可以为 STM32 微控制器提供快速配置和初始化的功能。

以下是使用 STMCubeMX 的简单教程。

1. 安装 STMCubeMX- 从 STMicroelectronics 官方网站下载 STMCubeMX 的最新版本。

- 安装并启动 STMCubeMX。

2. 创建一个新项目- 启动 STMCubeMX 后,点击 "New Project" 创建一个新项目。

- 选择所需的 MCu 系列和型号。

- 在 "Project Name" 中输入项目名称,选择一个保存路径。

3. 配置时钟- 在 "Pinout & Configuration" 选项卡中,配置时钟源和时钟分频。

- 根据需要,可以选择外部晶振或内部时钟源。

- 设置主时钟频率和分频系数。

4. 配置引脚- 在 "Pinout & Configuration" 选项卡中,配置引脚功能。

- 根据需要,为每个引脚选择相应的功能(UART、SPI、I2C 等)。

5. 配置外设模块- 在 "Pinout & Configuration" 选项卡中,配置外设模块。

- 根据需要,打开或关闭相应的外设模块(USART、SPI、I2C 等)。

6. 生成代码- 点击 "Project" 菜单,选择 "Generate Code"。

- STMCubeMX 将自动生成初始化代码,并保存在所选路径下。

7. 导入代码到开发环境- 打开所选路径下的代码文件夹。

- 根据需要,将生成的代码导入到所用的开发环境中。

8. 在代码中添加功能- 在生成的代码的基础上,添加自定义的功能和逻辑。

- 可以使用 HAL 库提供的函数和宏来简化操作。

基于STM32单片机的3维LED光立方的设计与实现

基于STM32单片机的3维LED光立方的设计与实现

基于STM32单片机的3维LED光立方的设计与实现3DLED光立方是一种由多个LED灯组成的立方体结构,可以在三个坐标轴上显示三维图形和动画。

在本文中,我们将研究基于STM32单片机的3DLED光立方的设计和实现。

首先,我们需要选择合适的STM32单片机来控制LED灯的亮灭。

在选择单片机时,我们需要考虑到处理速度、存储容量和GPIO数量等因素。

常用的STM32单片机有STM32F103和STM32F407等型号,它们都具有较快的处理速度和足够的GPIO数量来控制3DLED光立方。

接下来,我们需要设计和制作LED光立方的硬件部分。

LED光立方的主要部件包括LED灯、驱动电路和控制电路。

LED灯是光立方显示的核心部件,常用的LED灯有RGB三色LED和WS2812等类型的LED灯。

驱动电路主要用于控制LED灯的亮灭,常用的驱动电路有锁相环驱动电路和电平转换电路。

控制电路用于接收来自STM32单片机的指令,然后将相应的指令发送给驱动电路。

在设计控制电路时,我们可以选择使用UART或SPI等串行通信接口来与STM32单片机进行通信。

串行通信接口可以有效地减少GPIO的使用量,并且具有较高的通信速度。

在通信协议的选择上,我们可以使用自定义协议或者使用现有的协议,如DMX512等。

在软件设计方面,我们需要编写控制程序来控制LED光立方的显示。

首先,我们需要编写驱动程序来与控制电路进行通信,并控制LED灯的亮灭。

其次,我们需要编写图形和动画的显示程序,以实现3D效果的显示。

常用的图形算法有线段绘制算法和三角形填充算法等。

最后,我们还可以添加交互功能,使得用户可以通过按键或触摸屏来控制LED光立方的显示。

在实现的过程中,我们需要注意几个关键的问题。

首先,我们需要合理安排LED灯的布局,以确保LED光立方能够显示出清晰的图形和动画。

其次,我们需要注意LED灯的电流和电压的控制,以避免对单片机和LED 灯的损坏。

最后,我们还需要进行适当的测试和调试,以确保LED光立方的正常工作。

STM32CubeMX入门

STM32CubeMX入门

STM32CubeMX软件版本4.16,例程是以STM32F407IGT 为准,其他的STM32 系列的MCU 设置也是大同小异的。

(1)、file->new project或者界面中的New Project1)新建工程图1.1新建工程2)选择相应的型号选择OK,就能自动生成对应的界面图1.2选择ARM型号图1.3选中ARM型号示意图如果感觉芯片太小,点击芯片,滚动鼠标中轮一下就会放大与缩小(2)现在做一个点灯的程序A、LED灯硬件配置如图1.4所示图1.4LED灯硬件模块表1.1LED灯连接ARM管脚说明表序号LED名称ARM管脚说明1 D1 PA3 LED低电平点亮2 D2 PA23 D3 PC54 D4 PF11B、STM32CubeMX 中管脚配置找到对应的引脚PA3,左键按下,弹出选择菜单,选择GPIO_Output。

图1.5GPIO管脚工作状态配置设置好后,会注意到红色方框部分,报出警告错误。

因为PA3与ADC1_IN3、ADC2_IN3、ADC3_IN3是共用资源。

图1.6管脚资源共用引起警告C、设置GPIO管脚工作模式图1.7工作模式配置菜单与按钮图1.8工作模式配置选项D、设置外接晶振在Pinout设置RCC为外接晶振模式。

图1.9配置晶振管脚图1.10配置内部时钟分频寄存器E、配置完成图1.11晶振时钟与GPIO管脚配置完成图1.12四个LED管脚输出模式配置完成F、生成代码图1.13生成工程代码图1.14打开工程用keil软件打开工程,可查看生成的对应初始化代码。

有头文件,有C文件,并且有个main文件,然后也可以调用自己的文件完成配置。

图1.15工程代码中添加点亮LED的代码图1.16工程代码的目录。

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)在STM32CubeMX实战教程中,我们已经学习了如何使用GPIO来控制LED的亮灭。

在这篇文章中,我们将进一步学习如何使用外部中断来实现更复杂的功能。

外部中断可以使我们的微控制器能够在输入发生变化时立即做出响应。

这对于需要实时性的应用非常重要,比如按钮的按下或松开的检测。

外部中断类似于计数器,不断地检测输入引脚的变化,并在变化时触发中断。

在STM32CubeMX中配置外部中断非常简单。

我们只需要选择外部输入引脚作为中断源,然后为中断配置触发方式即可。

触发方式可以是上升沿、下降沿或双边沿触发。

但要注意的是,当使用外部中断时,我们应该避免在中断服务子程序(ISR)中使用延时函数,如HAL_Delay。

这是因为在ISR中调用延时函数会导致中断响应时间增加,从而影响其他中断的响应和整个系统的实时性。

所以在ISR中,我们只能执行最核心、最迅速的操作。

为了避免在ISR中使用延时函数,我们可以使用定时器中断来实现延时。

定时器中断是一种定期触发的中断,在ISR中我们可以通过判断定时器的计数值来实现一定时间的延时。

下面是一个使用外部中断的示例代码:```c#include "stm32f4xx_hal.h"GPIO_InitTypeDef GPIO_InitStruct;EXTI_HandleTypeDef hexti;void SysTick_Handler(void)HAL_IncTick(;HAL_SYSTICK_IRQHandler(;void EXTI_IRQHandler(void)HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //在这里执行最核心、最迅速的操作int main(void)HAL_Init(;SystemClock_Config(;__HAL_RCC_GPIOA_CLK_ENABLE(;__HAL_RCC_SYSCFG_CLK_ENABLE(;GPIO_InitStruct.Pin = GPIO_PIN_0;GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_PULLDOWN;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);HAL_NVIC_EnableIRQ(EXTI0_IRQn);while (1)//在这里执行其他操作}```在这个示例中,我们使用PA0引脚,即用户按钮作为外部中断源。

STM32CubeMX定时器的操作

STM32CubeMX定时器的操作
HAL_TIM_OC_DelayElapsedCallback(htim); HAL_TIM_PWM_PulseFinishedCallback(htim); } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; } } } /* Capture compare 2 event */ if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) { if(__HAL_TIM_GET_ITSTATUS(htim, TIM_IT_CC2) !=RESET) { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; /* Input capture event */ if((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00) { HAL_TIM_IC_CaptureCallback(htim); } /* Output compare event */ else { HAL_TIM_OC_DelayElapsedCallback(htim); HAL_TIM_PWM_PulseFinishedCallback(htim); } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; } } /* Capture compare 3 event */ if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) { if(__HAL_TIM_GET_ITSTATUS(htim, TIM_IT_CC3) !=RESET) { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; /* Input capture event */ if((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00) { HAL_TIM_IC_CaptureCallback(htim); } /* Output compare event */ else { HAL_TIM_OC_DelayElapsedCallback(htim); HAL_TIM_PWM_PulseFinishedCallback(htim); } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; } } /* Capture compare 4 event */ if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET)

stm32点亮led灯控制电路方案设计

stm32点亮led灯控制电路方案设计

stm32点亮led灯控制电路方案设计STM32是一款由STMicroelectronics推出的32位微控制器。

它具有高性能、低功耗和丰富的外设集成特点,被广泛应用于各种嵌入式系统中。

在本文中,将介绍如何设计一个基于STM32的LED灯控制电路方案。

LED灯是一种常见的光源,它具有寿命长、能耗低、工作稳定等优点。

在嵌入式系统中,我们经常需要控制LED灯的亮灭状态。

通过连接STM32微控制器和LED灯,我们可以实现LED灯的控制。

下面是一个基本的LED灯控制电路方案设计。

我们需要选择合适的STM32微控制器。

根据需求,我们可以选择不同型号的STM32微控制器。

例如,如果需要较高性能的控制,可以选择STM32F4系列微控制器。

如果需要较低功耗的控制,可以选择STM32L系列微控制器。

根据具体需求选择微控制器型号后,就可以开始设计电路了。

LED灯一般需要较小的电流和电压才能正常工作。

因此,为了保护LED灯和STM32微控制器,我们需要添加合适的电阻和电源电路。

通常,我们可以通过串联一个合适的限流电阻来限制电流,以防止LED灯过电流损坏。

在连接电源电路时,我们可以使用外部电源供电,或者利用STM32微控制器的引脚输出电压。

在硬件设计方面,我们需要将LED灯连接到STM32微控制器的一个GPIO引脚上。

通过控制该引脚的输出状态,我们可以控制LED灯的亮灭状态。

在代码编写方面,我们可以使用STM32的开发环境(例如Keil或STM32Cube)来编写代码。

在代码中,我们需要初始化GPIO引脚,设置为输出模式,并控制引脚的电平。

例如,通过将引脚设置为低电平,LED灯熄灭;通过将引脚设置为高电平,LED灯点亮。

为了增加LED灯的可变性,我们还可以添加一些外设,例如按钮或蜂鸣器。

通过连接按钮,我们可以实现LED灯的开关功能。

通过连接蜂鸣器,我们可以在特定条件下发出声音提示。

通过编写代码,我们可以监听按钮输入状态,并相应地控制LED灯或蜂鸣器发出声音。

stm32按键控制灯亮灭实验总结

stm32按键控制灯亮灭实验总结

stm32按键控制灯亮灭实验总结stm32是一款常用的单片机芯片,具有强大的处理能力和丰富的外设资源。

在很多嵌入式系统中,常常需要使用按键来控制某些功能或操作。

本文将介绍如何使用stm32按键控制灯亮灭的实验过程和总结。

实验目的:通过按键控制stm32开发板上的LED灯的亮灭,实现简单的开关控制功能。

实验原理:stm32开发板上通常会有一些按键,按键是一种常见的输入设备,通过按下按键可以改变开关的状态。

LED灯是一种常见的输出设备,可以通过控制其电流来实现亮灭效果。

我们可以通过将按键与LED 灯连接,并通过编程控制按键的状态来控制LED灯的亮灭。

实验步骤:1. 准备工作:首先,我们需要准备一块stm32开发板,一根USB数据线和一只LED灯。

将开发板连接到计算机上,并安装好开发环境(如Keil 或IAR)。

2. 连接电路:将LED灯的正极连接到stm32开发板上的一个IO口,并将负极连接到开发板上的地(GND)。

将按键的一个引脚连接到另一个IO 口上,另一个引脚连接到地(GND)。

3. 编写程序:打开开发环境,创建一个新的工程,并编写相应的程序。

首先需要初始化IO口,将控制LED的IO口设置为输出模式,将控制按键的IO口设置为输入模式。

然后,编写一个循环,不断检测按键的状态。

当按键被按下时,将LED的控制IO口置高,LED灯亮起;当按键松开时,将LED的控制IO口置低,LED灯熄灭。

4. 烧录程序:将开发板通过USB数据线连接到计算机上,选择正确的芯片型号和调试器,将程序烧录到开发板上。

5. 实验验证:将开发板上的按键按下,观察LED灯的亮灭情况。

按下按键时,LED灯应该亮起;松开按键时,LED灯应该熄灭。

通过不断按下和松开按键,可以实现LED灯的开关控制。

实验总结:通过本次实验,我们成功实现了使用stm32按键控制LED灯亮灭的功能。

通过编写程序,我们可以很方便地通过按下按键来控制LED的状态。

STM32CubeMX教程-点亮LED

STM32CubeMX教程-点亮LED
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 系列参考手册。我在后面会详细 说明。
2. 选 择 MCU 双 击
1.点击新建
双击 MCU 进入工程界面,如图:
MCU 外设 功能选择
MCU 管脚图,在这 里可以设置 GPIO 的 基本功能
Step 2:外设功能选择(Pinout)
1.RCC 设置:
RCC,选择 HSE,我用的板子是外接晶振,所以选择第三项。 1. 2. 3. Disable:使能外部时钟 BYPASS Clock Source:旁路时钟 Crystal/Ceramic Resonator: 晶体/陶瓷谐振器
选择使能 RCC 之后,右边的 MCU 相对应的管脚会自动变成绿色,说明该管脚 已经被使用:
左边功能选择后, 管脚会变成绿色
因为我们这里只是点灯一个简单动作,所以外设功能选择 RCC。 2.GPIO 口功能选择 GPIO 口 的 功 能 选 择 在 这 里 面 使 用 起 来 很 简 单 。 比 如 说 我 的 板 子 是 PG6,PG8,PC7 作为 LED1,LED2,LED3 的 IO 口,那么我直接找到相对应的 IO 口, 则会弹出该 IO 口所能设置的所有选项:
如上图所示: M 表示 PLLM; N 表示 PLLN; P 表示 PLLP; 那么我们来看看数据手册来确认一下它们为什么要设置成这些数字,设置其 他的可不可呢? 下面是 RCC PLL 配置寄存器的相关说明:

STM32F103入门---点亮流水灯教程

STM32F103入门---点亮流水灯教程

STM32F103⼊门---点亮流⽔灯教程⼀、STM32简介STM32,从字⾯上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表⽰32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。

在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星,它受宠若娇,⼤受⼯程师和市场的青睐,⽆芯能出其右。

STM32 属于⼀个微控制器,⾃带了各种常⽤通信接⼝,⽐如 USART、I2C、SPI 等,可接⾮常多的传感器,可以控制很多的设备。

现实⽣活中,我们接触到的很多电器产品都有 STM32 的⾝影,⽐如智能⼿环,微型四轴飞⾏器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。

STM32 有很多系列,可以满⾜市场的各种需求,从内核上分有 Cortex-M0、M3、M4和 M7 这⼏种,每个内核⼜⼤概分为主流、⾼性能和低功耗。

单纯从学习的⾓度出发,可以选择 F1和 F4,F1代表了基础型,基于 Cortex-M3内核,主频为 72MHZ,F4 代表了⾼性能,基于 Cortex-M4 内核,主频 180M。

本⽂则选择的F1下的stm32f103c8t6。

⼆.使⽤通过寄存器点灯原理介绍。

1.配置时钟使能。

因为流⽔灯要操作的引脚都是在GPIO端⼝的,所以根据系统结构图,属于AHB总线,所以所要⽤的端⼝的复位和时间控制都受RCC控制。

再看寄存器组起始地址表,可以看到RCC的地址范围,且可以看到要控制的寄存器都是在APB2总。

从上⾯发现复位和时钟控制的起始地址为0x4002 1000,再翻到这⾥发下偏移量为0x18,所以该寄存器的地址为0x4002 1018上图表格表⽰的寄存器⾥各位的含义,⽐如第三位也就是2那个位置为1时,就是GPIOA的时钟开启了。

这时我们就可以⽤代码表达出来了。

#define RCC_AP2ENR *((unsigned volatile int*)0x40021018) #时钟使能寄存器RCC_AP2ENR|=1<<2; //开启APB2-GPIOA外设时钟使能接下来就是配置端⼝配置寄存器了,这个就⽐较关键了,可以发现上⾯的时钟使能寄存器开启时钟是针对⼀个区域的,并不能确定引脚,⽽这个寄存器就是确定引脚的,端⼝配置寄存器有两个,分别为端⼝配置低寄存器(CRL)和端⼝配置⾼寄存器(CRH)。

  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 之 后 就 是 系 统 时 钟 了 。
相关文档
最新文档