当前位置:首页 > 单片机 > STM32CubeMX > 正文内容

STM32CubeMX系列教程1:GPIO输入与输出

ouyang7个月前 (09-26)STM32CubeMX2137



一、摘要

  本章讲解STM32 GPIO的输入与输出,以使用一个按键控制一个LED灯的亮与灭。

二、创建工程

  打开STM32CubeMX,新建工程,选择单片机型号,这里以STM32F411CEU6为例。
        新建工程可参考《STM32CubeMX系列教程0:创建工程》

        如果需要安装环境,可参考《STM32开发环境安装》

1. 配置外设与IO

1-1. 配置RCC与Debug

  进入System Core-SYS设置,选择Debug为Serial wire。其他参数默认
enter description here
  进入System Core-RCC设置,分别配置HSE为Crystal/Ceramic Resonator(晶体/陶瓷谐振器)。其他参数默认
enter description here

1-2. 选择GPIO引脚与功能

  在右侧的单片机上选择连接有LED灯和按键的IO引脚,比如我的单片机系统的PA0连接了LED灯,PC13连接了一个按键。
  配置输出引脚。
  在连接了LED灯的引脚上单击左键,选择Output功能。
enter description here
  在PA0上右键,选择Enter User Label,键入别名,输入LED。
enter description here
enter description here
  配置输入引脚,在连接了按键的引脚上单击左键,选择Input功能。然后同样在PC13上右键,键入别名KEY。
enter description here

1-3. 配置GPIO

  进入System Core-GPIO设置,上方选择GPIO引脚设置。
配置输出引脚PA0.。选中上方的PA0。
enter description here

  1. 引脚上电时的默认状态。(高电平/低电平)
    因我的LED灯的阴极连接的单片机引脚,所以选择高电平,表示默认熄灭。

  2. 引脚模式。(推挽输出/开漏输出)
    这里选择推挽输出。

  3. 开启引脚外部上拉或下拉。(浮空/上拉/下拉)
    这里选择上拉。

  4. 引脚输出速度。(低/中/高/很高)
    默认即可。

  5. 引脚别名。这里之前选择GPIO时已经配置过就不用在配置。

配置输入引脚PC13。.选中PC13.。
enter description here
1. 引脚模式。这里默认为输入模式,不可更改。
2. 开启引脚外部上拉或下拉。(浮空/上拉/下拉)
根据电路设计选择,一般使用上拉。
3. 用户别名设置。

2. 时钟配置

  进入时钟配置界面。根据单片机系统中采用的晶振频率设置HSE,我的单片机系统采用的8M晶振。这里必须使能System Core-RCC中的HSE才可以设置。刚才我们已经配置过了。
enter description here
  配置系统主频,时钟源选择HSE,系统主频选择PLLCLK,再在HCLK框中输入系统推荐的主频,点击回车,软件即可自动配置各个分频器的值。
enter description here

3. 工程输出设置

  点击上方的 Project Manager进入配置界面。在project设置中,分别设置好工程名称,工程路径,与开发环境,比如,如果使用的是keil环境,则选择MDK_ARM。
enter description here
  左侧选择Code Generator设置,选择仅复制需要的库文件,勾选外设初始化生成独立的.c/.h文件。这样生成的工程文件比较小并且后期容易修改。
  enter description here
点击右上角的GENERATE CODE生成工程。
enter description here

三、编写用户代码

1. 插入用户代码

  打开生成的工程,打开main.c文件,找到main(void)入口函数,找到while语句,加入判断按键按下,改变led灯的状态的语句。
  用户代码要加在USER CODE BEGIN N和USER CODE END N之间,否则下次重新生成代码后,会被删除

/* USER CODE BEGIN WHILE */
  while (1)
  {		if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0) //判断按键KEY是否被按下
		{
			HAL_Delay(10);												//延时10ms消除按键抖动if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)  //再次判断按键KEY是否依然被按下
			{
				HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); 				//对LED引脚进行取反操作while(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0);  //等待按键抬起
			}
		}/* USER CODE END WHILE */


enter description here


2. 编译

点击左上角的编译图标,稍等一会儿,可以看到,下方的Build Output窗口提示编译完成,输出程序占用的空间,没有警告与错误。
enter description here

3. 下载代码进入单片机

STM32单片机程序下载方法有多种,有需要请转《STM32程序下载》专题查阅,选择你所需要的下载方法。http://oynote.top/?tags=57

    扫描二维码至手机访问

    扫描二维码推送至手机访问。

    版权声明:本文由电子科技Blog发布,如需转载请注明出处。

    转载请注明出处:http://oynote.top/?id=353

    分享给朋友:

    相关文章

    STM32CubeMX系列教程3:基本定时器中断

    STM32CubeMX系列教程3:基本定时器中断

    一、摘要二、配置工程1-1. 使能定时器1-2. 配置定时器参数1-3. 开启定时器中断1. 配置定时器参数2. 生成工程三、编写用户程序1. 编写中断回调函数2. 启动定时器四、编译下载程序一、摘要...

    STM32CubeMX系列教程4:基本串行通信

    STM32CubeMX系列教程4:基本串行通信

    一、摘要二、配置工程2-1. 启动串口中断2-2. 编写用户代码2-3. 编写中断回调函数2-4. 编译下载1-1. 启用串口通信1-2. 编写用户代码1-3. 编译下载1. 轮询方式发送2. 中断方...

    STM32CubeMX系列教程2:外部中断EXIT

    STM32CubeMX系列教程2:外部中断EXIT

    一、摘要二、配置工程3-1. 中断优先级分组3-2. 中断优先级1. 修改引脚模式2. 配置GPIO3. 开启外部中断4. 生成工程三、编写用户程序1. 编写中断回调函数四、编译下载程序1. 注意一、...

    STM32CubeMX系列教程5:串口接收不定长数据

    STM32CubeMX系列教程5:串口接收不定长数据

    一、摘要二、配置工程1. 配置串口及DMA2. 生成源码三、修改源码1. 重定向printf2. 添加串口接收所需变量3. 添加串口及IDLE处理函数4. 声明变量及函数5. 启用IDLE中断6. 修...

    STM32CubeMX系列教程0:创建工程

    STM32CubeMX系列教程0:创建工程

    STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(R...

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。