一个月准备蓝桥杯嵌入式——dey1点亮LED

本文描述了作者准备蓝桥杯比赛的第一天,包括使用C语言配置GPIO接口驱动LED,设置外部时钟源,以及在主循环中交替显示不同颜色。最后提到可能需要在考试前安装和熟悉软件环境。

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

从今天开始准备15届蓝桥杯

第一天点亮LED,因为之前学过标准库,所以算有一点点基础。

STM32cubemx+keil之前已经安装过了,所以第一天直接点亮LED。

写给自己看的,所以就不写没用的细节。

1、配置为外部时钟源

733e71c9fcf9411cb714a5a6dc6d75c5.png

2、配置时钟树,根据蓝桥杯官方提供的历程来

0652d7197f2949ab887bd52b2b5b8efd.png

3、配置LED 相关IO口

fb1880638dd7469d8cf0fb1ee3ceefad.pngb1cf31b8de9d4845a28ecc450cd59526.png

4、生成MDK文件,新建User文件夹,新建LED.C/LED.H文件

2b0c582199c34fb6876da0f072e6402b.png

5、开写代码(放出核心代码)

宏定义

    #define uchar unsigned char
    #define uint unsigned int

 

//LED.c

void LED_Drive (uchar LED_W)
{
    HAL_GPIO_WritePin (GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
    for (uchar i=0;i<8;i++)
    {
    HAL_GPIO_WritePin (GPIOC,LED_W<<8&(GPIO_PIN_8<<i),GPIO_PIN_RESET);
    }
    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
        HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);

}

 //main.c

  while (1)
  {
    /* USER CODE END WHILE */
	
	  /* USER CODE BEGIN 3 */
	  LED_Drive(0xaa);
	  HAL_Delay(1000);
	LED_Drive(0x55);
	  HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

然后for循环的逻辑懒得解释,放核心代码,这是HAL库对GPIO_PIN_0的宏定义,为了容易观看,我把16位写出来了,很容易能观察出来的。

//#define GPIO_PIN_0   //0000 0000 0000 0001         ((uint16_t)0x0001)  /* Pin 0 selected    */
//#define GPIO_PIN_1   //0000 0000 0000 0010         ((uint16_t)0x0002)  /* Pin 1 selected    */ 
//#define GPIO_PIN_2   //0000 0000 0000 0100         ((uint16_t)0x0004)  /* Pin 2 selected    */
//#define GPIO_PIN_3   //0000 0000 0000 1000         ((uint16_t)0x0008)  /* Pin 3 selected    */      
//#define GPIO_PIN_4   //0000 0000 0001 0000         ((uint16_t)0x0010)  /* Pin 4 selected    */      
//#define GPIO_PIN_5   //0000 0000 0010 0000         ((uint16_t)0x0020)  /* Pin 5 selected    */      
//#define GPIO_PIN_6   //0000 0000 0100 0000         ((uint16_t)0x0040)  /* Pin 6 selected    */      
//#define GPIO_PIN_7   //0000 0000 1000 0000         ((uint16_t)0x0080)  /* Pin 7 selected    */      
//#define GPIO_PIN_8   //0000 0001 0000 0000         ((uint16_t)0x0100)  /* Pin 8 selected    */      
//#define GPIO_PIN_9   //0000 0010 0000 0000         ((uint16_t)0x0200)  /* Pin 9 selected    */      
//#define GPIO_PIN_10  //0000 0100 0000 0000         ((uint16_t)0x0400)  /* Pin 10 selected   */      
//#define GPIO_PIN_11  //0000 1000 0000 0000         ((uint16_t)0x0800)  /* Pin 11 selected   */     
//#define GPIO_PIN_12  //0001 0000 0000 0000         ((uint16_t)0x1000)  /* Pin 12 selected   */      
//#define GPIO_PIN_13  //0010 0000 0000 0000         ((uint16_t)0x2000)  /* Pin 13 selected   */      
//#define GPIO_PIN_14  //0100 0000 0000 0000         ((uint16_t)0x4000)  /* Pin 14 selected   */      
//#define GPIO_PIN_15  //1000 0000 0000 0000         ((uint16_t)0x8000)  /* Pin 15 selected   */      
//#define GPIO_PIN_All //1111 1111 1111 1111         ((uint16_t)0xFFFF)  /* All pins selected */

 

完事,因为要考试,不知道考试时是否需要重新装cubemx和G4的包,明天装个虚拟机训练一下快速安装和离线装包的步骤。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值