STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)

第2次课 GPIO输出功能

1. CubeMX5环境的基本启动

STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第1张图片
1处为根据MCU的型号选取,裸的MCU,没有默认参数配置
2处根据MCU对应的官方评估板,调用想用的MCU的默认参数。我们先使用2的方法。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第2张图片
根据上图的提示,在2处填写NUCLEO-F103,在右侧就会出现赌赢的开发板,双击开发板图片,然后选择yes,就调用了MCU的默认配置。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第3张图片
上图中是cubmx软件的主界面,其中1是菜单条,对应4个主要功能,我们主要用前3个。
2处为,MCU对应的功能,通过这个菜单启用MCU功能,配置相应的参数。
3处为MCU的管脚图,通过这个图可以方便的对管脚设置相应的功能
4处为当前管脚区的子菜单,点击右键或者点击向下的箭头可以展开对应功能。

2.设置GIO输出功能

(1)根据开发板的电路图,知道PA5连接的LED小灯,因此设置PA5管脚为输出
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第4张图片
(2)左键点击PA,在弹出的菜单中选择GPIO_Ouput功能
(3)给管脚起一个别名,在PA5上点击右键,在弹出的菜单中选择添加标签,给出别名
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第5张图片
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第6张图片
(7)然后配置GPIO的PA5对应的输出功能,如下图所示,主要是4出配置端口的输出功能。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第7张图片
(8)对应的设置为底频率,推挽输出、无上拉和下拉。

3. 设置工程存放路径和生成代码格式

(1)设置工程的名称和工程的保存路径,路径和工程名称不要有中文。如下图所示
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第8张图片
(2)如上图所示,设置生成代码的格式,在5处选择 MDK-ARM5,6处代表当前用HAL库的版本号
(3)设置生成代码的格式,如下图所示,选择2后,3/4/5选择相应的参数,其中5处很重要,确保生成的工程中每一个.C文件都对应一个.h文件,后面编程会大量引用.h文件
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第9张图片
(4)如上图所示,设置好参数后,最后点击6,进行代码的生成。 如下图所示,打开工程目录

STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第10张图片
(5)在工程目录中,有两个重要文件,1个是在cubmx打开工程,如下图所示。后缀为.IOC文件。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第11张图片
(6)另个一个重要文件后缀为uvprojx,是在keil MDK软件中打开对应的工程代码,进行程序代码的编写。如下图所示。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第12张图片
(7)双击上图的uvprojx文件,就可以在kei MDK中打开对应的工程代码。

4. 在keil软件中编写程序功能代码

(1)keil中main函数的修改,如图所示,展开1处的各种文件夹,找到main.C文件,双击此文件,在又就打开了main文件的编写区。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第13张图片
(2)在main文件中找到main函数的位置,用户自己编写的代码都放在例如3和4处标识的USER CODE区域,如果不放在这个区域,用户自己的代码,在利用cubemx进行参数重新生成项目的时候会被删除掉。

5.修改main函数,实现led灯的闪烁

(1)在main函数的while循环中添加代码,如下图所示。,在输入代码的时候,工具会提供对应的命令提示,选取相应的命令即可,方便编程,不用死记硬背对应功能名称。
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第14张图片
(2)输入如下代码
STM32F103教程(基于STM32F103nucleo开发板--HAL库开发)(2)_第15张图片
具体代码如下

	while (1)
  {
		HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET);//管脚输出高电平
		HAL_Delay(1000);  //延时1000毫秒
		HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);//管脚输出低电平
		HAL_Delay(1000);  //延时1000毫秒
		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

你可能感兴趣的:(物联网)