嵌入式Linux系统开发基础【04】

本文介绍了如何使用STM32F103C8T6的GPIO控制LED灯,通过STM32CubeMX生成代码并利用HAL库进行操作,包括新建项目、配置GPIO、编写main.c中的循环控制逻辑和观察输出波形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验目标

实验1:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA/GPIOB/GPIOC端口控制LED灯,轮流闪烁,间隔时长1秒。

实验2:在实验1的基础上,改用标准外设库方式使用某个端口GPIOx端口管脚控制几个LED灯,轮流闪烁,间隔时长1秒。观察GPIO端口的输出波形,并分析时序状态正确与否、高低电平转换周期(LED闪烁周期)实际为多少。


一、基于寄存器的LED流水灯

同之前的嵌入式Linux系统开发基础【02】

二、STM32CubeMX生成代码使用HAL库点亮流水灯

因为HAL库的资料现成的,所以就决定是它了。

1.新建项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.main.c

主函数代码如下:

  SystemClock_Config();//系统时钟初始化
  MX_GPIO_Init();//gpio初始化
  while (1)
  {		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4亮灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
		HAL_Delay(1000);//延时1s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9亮灯
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15熄灯
		HAL_Delay(1000);//延时1s		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4熄灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9熄灯
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15亮灯
		HAL_Delay(1000);//延时1s
	}

3.电路连接

对于USB转TTL模块和stm32f103c8t6连接:
GND — GND
3v3 — 3v3
TXD — A10
RXD — A9
在这里插入图片描述

4.烧录运行

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.观察GPIO端口的输出波形

在这里插入图片描述
引脚为高电平的灯亮,低电平的灯不亮。
(不会知道为啥跟其他人的不一样)。


总结

在只使用keil的时候,无论是创建工程还是代码编写,都要麻烦很多,而用STMCubeMX+keil+hal库实现则比较容易。

参考来源

https://blog.youkuaiyun.com/weixin_46129506/article/details/120780184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值