<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)

绪论:
STM32CubeMX 是一个图形工具,可以非常轻松地配置 STM32 微控制器和微处理器。所以再初始开发过程成可以减少时间周期。或者是对入门初学者使用,能更快的上手应用开发。
本系列教程主要是针对基础运用下的,选用的开发工具如下:
1、STM32CubeMX
2、IDE为:MDK-Keil
3、开发板子芯片为:STM32F407ZET6
4、HAL库

注: 提前安装好STM32CubeMX 和Keil

本节主要讲解工程创建过程 以及LED灯控制

过程如下
1、打开工程选择开发芯片
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第1张图片
1)打开STM32CubeMX后,得到界面入上图所示,旧版有区别,注意,但是界面的相关操作都差不多,主要是布局有变化;
2)选择箭头处的“ACCESS TO MCU SELECTOR”,意思是选择MCU的型号进行配置工程的开始;也可以选择其它两个,根据自己使用情况,或可尝试看看。
3)在(2)点击后会进入下一步芯片具体类型的选择。

2、开发芯片选择
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第2张图片
1)在上图箭头处输出具体的电路板上的芯片型号,作者使用的芯片型号是"STM32F407ZET6",搜索时输入“STM32F407”,得到下图所示:
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第3张图片
2)根据上图搜索的型号选择具体芯片,选中后会有深色,选后按照下图说是点击“Star Project”,开始进入工程配置。
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第4张图片

3、工程配置界面介绍
1)进入配置后的界面如下图所示:
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第5张图片
上图标志 1:主要是配置芯片的使用,包括:GPIO、时钟源、Debug、定时器、DMA、ADC、DAC、CAN、FSMC、I2C、SPI、SDIO、UART\USART、等底层驱动使用的配置,以及中间层驱动:FATFS、FREERTOS、LIBJPEG、LWIP等等。详细选型可以查看图标7各位置。

上图标志2:芯片的时钟配置,可以详细的看到每一路的时钟,及配置大小。(后面会有截图)

上图标志3:工程输出的一些配置,包括目录,工程名称、选用的IDE、堆栈大小配置等;(后面会讲解到)

上图标志4:一些开发工具的使用配置,目前暂不涉及使用;

上图标志8:以图形的方式展示芯片,可放大缩小查看每一个引脚,并通过鼠标左右键配置IO引脚。

上图标志5:在所有配置完成后,点击即可生成代码工程,并用配置的IED打开工程即可。

4、工程配置
1)配置RCC,即晶振的选择配置;
选择"Pinout&Configuration"->“System Core”->“RCC”,如下图步骤1、2、3;
High Speed Clock(HSE):表示外部高速晶振;
High Speed Clock(HSE):表示外部低速晶振,使用RTC实时时钟是一般用这个;
在步骤4、5可选择晶振的配型,“BYPASS Clock Source”和“Crystal/Ceramic Resonator”两种,第一个是旁路时钟源,第二个是晶体/陶瓷谐振器,一般电路使用的是“Crystal/Ceramic Resonator”。
本教程作者选用的高速和低速都是“Crystal/Ceramic Resonator”。
如下图:
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第6张图片
2)配置SYS,即DEBUG的方式选择

选择"Pinout&Configuration"->“System Core”->“SYS”,如下图步骤1、2、3;
下图步骤4则是选择Debug的方式,一般选择SDW的方式能满足使用,如果想用JTAG也可选择JTAG。

本教程在这里作者选中SDW的方式即“Serial Wire”。
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第7张图片
3)配置LED灯的GPIO
教程选择用的开发板LED0连接的是GPIOF9,LED1是GPIOF10,采用共阳电路,所以是低电平有效点亮,如下图所示:
第一步:选择GPIOF9,点击鼠标左键,会出现下图标注3的选项,选择GPIO_Output,即输出模式。同理选择GPIOF10;
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第8张图片
第二步:更改引脚的名称鼠标右击对应的GPIO,弹出 选项列表,选择“Enter User Lable”,然后输入名称;这里作者的GPIOF9的标签名称为LED0,GPIOF10的标签为LED1;可根据自己的命名习惯填写,后续在代码中对其的控制,则是通过这个宏定义的名称进行的。

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第9张图片
以上三个方面 就完成了对使用的功能配置。。。。

  1. 时钟配置
    时钟配置,点击“Clock Configuration”,如下图标注1位置;
    在下图标注2位置,输入时钟总线的最终频率,根据芯片有效范围设定,一般F1的芯片为72,F4的为168或180,这里作者选用180MHZ,输入后回车,会有提示,对提示进行确认即可。这样时钟的大小配置即可完成。

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第10张图片
5)输出工程文件配置

第一个:项目配置,如下图标注,
标注1:选择“Project Manager”,进入项目配置;
标注2:项目工程文件相关的配置;
标注3:设置工程的名称,这里作者就用”LED“,可根据自己要求写;
标注4:工程文件存放的路径目录,不要包含中文路径,否则可能会报错。。
标注5:工程的IDE选择,此教程选用的是keil,所以选择的是MKD-ARM,可根据自己使用的IDE选择对应的。
标注6:IDE的版本,默认最新版本即可,如果是keil4则选择低的版本;
标注7:堆栈大小的设置,目前这个LED工程使用不大,所以默认大小即可,后续的其它功能的教程会涉及堆栈大小的修改。

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第11张图片
6)代码生成配置

第二个:代码生成配置,如下图标注,
标注1:选择“Project Manager”,进入代码项目配置;
标注2:代码生成相关的配置;
标注3:设置使用的库文件
第一个选项是:复制所有的库文件到工程中;
第二个选型是:只复制需要用到的库文件;
第三个选项是:在工具链项目配置文件中添加必要的库文件作为参考
此处作者选用第一个,复制所有的库文件。。。

标注4:生成文件的配置
第一个:为每个外设生成一对“.c/.h”文件的外设初始化;
第二个:重新生成时备份以前生成的文件;
第三个:重新生成时保留用户代码;
第四个:不重新生成时删除以前生成的文件;
此处作者选用 第一个,第三个,第四个;

标注5:以上所有配置好后,点击“GENERATE CODE”,生成代码工程;
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第12张图片

5、代码生成

点击“GENERATE CODE”,生成代码工程;提示如下,点击“Open Project”打开工程;
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第13张图片
6、添加LED控制代码

1)打开工程后如下所示:
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第14张图片
2)添加LED控制代码

第一步:打开工程后,先点击“在这里插入图片描述”编译一下,确保相关的.h文件能够找得到。

第二步:在“main.h”添加如下图所示代码:

//写GPIO
#define LED0(n) HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, n?GPIO_PIN_SET:GPIO_PIN_RESET )
#define LED1(n) HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, n?GPIO_PIN_SET:GPIO_PIN_RESET )

//GPIO状态取反-即反转
#define ToggLED0() HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin)
#define ToggLED1() HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin)

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第15张图片
第三步:在主函数添加控制代码

下图代码方法1是采用单独设置状态的方式控制LED0的闪烁,方法2是采用反转的方式控制LED1闪烁;
使用其中一种即可;这里作者选用第一种进行测试。

如下图:

/*******************方法1**************************/
	  LED0(1);			//关闭LED0
	  HAL_Delay(300);	//延时300ms
	  LED0(0);			//关闭LED0
	  HAL_Delay(300);	//延时300ms
/*******************方法2**************************/
	  ToggLED1();			//LED1状态取反
	  HAL_Delay(300);	//延时300ms
	  
	

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第16张图片
2)编译下载
第一步:点击“ 在这里插入图片描述”进行编译;
第二步:下载器选择,根据自己的下载器选择,这里作者选用J-LINK;

<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第17张图片
第三步:下载方式配置,相关选项参考下图即可:
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第18张图片
<STM32>STM32CubeMX-基础工程创建及LED灯控制 (1)_第19张图片
第四步:下载
点击“ 在这里插入图片描述”下载代码即可。

7、效果
由于视频无法直接上传,这里就看不见了。
作者下载后能看到LED0闪烁。

总结:至此,整个LED工程的创建,及控制闪烁,已完成;

欢迎交流:QQ759521350

-------------------以上内容如有不足之处,还望指出,交流----------------

--------------------------------转载标明出处--------------------------------

你可能感兴趣的:(STM32,STM32CubeMX,c语言,stm32)