STM32 CubeMX学习:1. 点亮LED

STM32 CubeMX学习:1. 点亮LED

系列文章目录
  1. 前期的准备
  2. 点亮 LED
  3. 闪烁 LED
  4. 定时器闪烁LED
  5. PWM控制LED亮度
  6. 常见的PWM设备
  7. 按键的外部中断
  8. ADC模数转换
  9. 串口收发
  10. 串口打印遥控器数据
  11. 未完待续…


1.1基础学习:LED灯基础知识

1、LED即发光二极管,当LED内有电流通过时会发光,在安全电流范围内,电流越大,亮度越亮
led

1.2 程序学习

1.2.1 CubeMX 配置 GPIO 的基本操作

1、我这里使用正点原子的探索者开发板,在这块学习板上,与LED相连的引脚为PF9和PF10

LED引脚
所以我们需要在之后配置相应的引脚,这里我对LED灯的点亮原理作简要的说明啦
在这里插入图片描述
如上图所示我们可以看到,发光二极管的阴极与单片机引脚相连,发光二极管的阳极通过电阻与3.3伏的VCC相连。当单片机的引脚给高电平时,近似于发光二极管两端没有电势差,没有电流通过,因此发光二极管没有点亮,相反的如果单片机的引脚给低电平,发光二极管两端有电势差,有电流通过,发光二极管可以点亮。

2、下面我们可以在上一篇新建工程的基础上,在cubeMX中配置GPIO为输出模式,在cubeMX找到对应引脚,配置成GPIO_Output模式。
首先,搜索PF9和PF10(这里以PF9为例进行说明,PF10同理)
搜索引脚

选择引脚模式为输出模式(Output)
引脚模式选择
3、在cubeMX中修改对应引脚的名字。
(1)在左侧找到System core->GPIO;
(2)找到对应的GPIO,例如PF9;
(3)在下方的配置单中user label填写命名,填好后会在芯片缩略图中更新。

如下图所示

命名
4、生成代码:点击GENERATE CODE按键。
生成代码

1.2.2 HAL_GPIO_WritePin函数的讲解

1、在HAL库中我们可以找到一个操作GPIO电平的函数:HAL_GPIO_WritePin函数

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

(1)该函数的作用在于使对应的引脚输出高电平或者低电平。
(2)该函数返回值为void,即没有返回值
(3)该函数有3个入口参数,可根据自己的需求进行设置

	(a)GPIOx——		对应GPIO总线,其中x可以是A…I。例如PF9,则输入GPIOF
	(b)GPIO_Pin——	对应引脚数。可以是0-15。例如PF9,则输入GPIO_PIN_9
	(c)PinState——	GPIO_PIN_RESET:输出低电平;GPIO_PIN_SET:输出高电平

这里我们先尝试将两个LED同时点亮,

这里先给大家补充一些关于单片机的小知识:
对于单片机来说,LED灯等可以被称为是单片机的外设,对于外设的使用,大致可以按照以下几个步骤进行。
首先,HAL状态的初始化,可能包括flash指令缓存、flash数据缓存、flash预读取缓存、中断分组优先级、内部时钟HSI、MCU特定封装的初始化。
然后,进行系统时钟的初始化。
接着,对于GPIO初始化。
最后,操作相应的外设完成所需功能。

1.1.3 程序流程

程序经过HAL_Init初始化, GPIO初始化,进入主循环,在主循环中将2个LED引脚均输出低电平,从而点亮LED灯。主循环代码如下:

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		//set GPIO output low level 
		//设置GPIO 输出低电平 
		HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET); 
		HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET); 
		

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

完整的main函数代码如下所示

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		//set GPIO output low level 
		//设置GPIO 输出低电平 
		HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET); 
		HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET); 
		

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

然后在keil软件中编译代码并把代码下载到单片机中,
编译和下载
其中1为编译按钮,可以对整个keil工程进行编译
2为下载按钮,可以把代码下载到单片机之中,但是在下载之前,除了要安装相关的驱动(根据自己的情况分别配置),还需要进行一些设置
下载设置
首先点击1处的“魔术棒”,然后点击2处进入debug设置,在3处选择自己的调试器,常见的调试器有ST-Link和J-Link等,大家可以自行查询一下这些调试器的区别,这里不做过多的介绍。在4处,我们可以看到一串地址,说明调试器已经成功连接到电脑。
下载设置
然后点击1处的“Flash Download”,按照2处进行勾选,不过注意,其中“Reset and Run”代表一旦代码下载到单片机中立刻开始运行程序,这里要根据自己的需要灵活的进行设置。这样我们就完成关于下载的一些设置。

最后我们可以看到工程运行效果如图所示
效果
可以看到“TFTLCD”下的两个LED灯已经被点亮,达到了我们预期的效果

代码我已经放到了我的GitHub仓库,如有需要可以下载使用:
CubeMX学习


总结

GPIO输出操作是STM32中最基础的操作啦,通过高低电平的控制完成类似开关的控制,而高电平则对应了计算机中的数字1,而低电平对应了计算机中的数字0,高低电平的不断变化,对应计算机内部的数字变化,STM32便是这样输出信号给外部世界的啦。 从此妈妈再也不用担心我的点灯啦,大家给自己点个赞,学习单片机还要再接再厉哦!
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值