STM32CubeMX基础例程(小熊派):01.点亮LED灯

1、准备开发板

这里我选用了一块网红开发板:”小熊派“,这款板子的人气比较高,还是全国大学生物联网设计竞赛(华为杯)的华为竞赛开发板,我个人也比较喜欢用这款板子,这款板子在放在纸箱吃灰半年之后,被我重新拿了起来,并想借此写博客的机会,整理一下自己的代码。

开发板功能区分布图
在这里插入图片描述
开发板俯视图在这里插入图片描述
外设引脚对应表

MCU引脚引脚标注名
PC13LED

LED原理图
在这里插入图片描述

2、STM32CubeMX生成代码

在这里插入图片描述

搜索并选择芯片型号

在这里插入图片描述

配置系统时钟

在这里插入图片描述

配置时钟树

STM32L4的最高主频可达到80M,最后使HCLK = 80Mhz即可:

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

配置GPIO引脚

在这里插入图片描述

修改引脚的用户标签(相当于取另一个新名字)

在这里插入图片描述

生成工程设置

在这里插入图片描述

代码生成配置

在这里插入图片描述

生成代码

在这里插入图片描述

生成成功

在这里插入图片描述

3、在MDK中编写代码

在gpio.h的用户代码区编写以下代码:

/* USER CODE BEGIN Includes */
typedef enum
{
    
	LED_OFF = 0,
	LED_ON,
	LED_Toggle
        
} LED_ENUM;
/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */
#define LED_Set(status) status != LED_Toggle ? HAL_GPIO_WritePin( LED_GPIO_Port, LED_Pin, status != LED_ON ? GPIO_PIN_RESET : GPIO_PIN_SET): HAL_GPIO_TogglePin( LED_GPIO_Port, LED_Pin);	//利用define可以美化和简短我们的代码,知识点就用到了三目运算符的嵌套判断。
/* USER CODE END Private defines */

在main.c中的main函数中编写以下代码

while (1)
{  
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
    LED_Set(LED_Toggle);	//翻转LED
    HAL_Delay(1000);		//延时1秒

/*   下面的代码等效于上面的代码  */
//  	LED_Set(LED_ON);		//点亮LED
//  	HAL_Delay(1000);		//延时1秒
//  	LED_Set(LED_OFF);		//熄灭LED
//  	HAL_Delay(1000);		//延时1秒
	
}
  /* USER CODE END 3 */

在这里插入图片描述

4、配置烧录器

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

5、烧录代码

在这里插入图片描述

6、实验现象

控制LED小灯每1秒钟闪烁一次。

7、技术交流群

技术交流群:1005311419

好的,以下是通过C语言代码使用 Cortex-M3 内核开发板点亮 LED 的步骤: 1. 确认你的开发板支持 GPIO 控制,并且你已经了解了开发板的硬件资源分配情况,确认可以将 LED 连接到开发板的 GPIO 引脚上。 2. 打开开发板的开发环境,创建一个新的工程。 3. 在工程中添加头文件 `stm32f10x.h`,该头文件包含了 STM32F10x 系列芯片的寄存器定义和相关函数定义。 4. 在代码中初始化 GPIO 引脚,设置为输出模式,并将 LED 引脚初始化为低电平。代码如下: ```c #include "stm32f10x.h" int main(void) { // 使能GPIOB时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 初始化GPIOB的Pin.0为输出模式,初始电平为低电平 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // LED连接的GPIO引脚为PB0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // GPIO最大输出频率为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 初始电平为低电平 while(1) { // 点亮LED,将GPIO电平置为高电平 GPIO_SetBits(GPIOB, GPIO_Pin_0); // 延时一段时间 for(int i = 0; i < 1000000; i++); // 关闭LED,将GPIO电平置为低电平 GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 延时一段时间 for(int i = 0; i < 1000000; i++); } } ``` 5. 编译并下载代码到开发板上,LED 就会开始闪烁。 注意事项: - 不同开发板的具体代码可能会有所不同,需要根据实际情况进行调整。 - 在使用 GPIO 控制 LED 时,需要注意电流大小,以免对开发板和 LED 造成损坏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值