打印
[STM32L0]

看了一下stm32l0xx_nucleo_32.c文件 有些东西可以借鉴

[复制链接]
552|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这里的LED 初始化 看了一下,封装方式可以借鉴啊
void BSP_LED_Init(Led_TypeDef Led)
{
  GPIO_InitTypeDef  GPIO_InitStruct;
  
  /* Enable the GPIO_LED Clock */
  LEDx_GPIO_CLK_ENABLE(Led);

  /* Configure the GPIO_LED pin */
  GPIO_InitStruct.Pin = LED_PIN[Led];
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  
  HAL_GPIO_Init(LED_PORT[Led], &GPIO_InitStruct);
  HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET);
}


使用特权

评论回复
沙发
hanzhen654|  楼主 | 2020-3-19 22:39 | 只看该作者
可以直接在使用 BSP_LED_Init(LED3);对板卡的LD3进行初始化。这里有个疑惑Led_TypeDef 是个什么东西?

使用特权

评论回复
板凳
hanzhen654|  楼主 | 2020-3-19 22:41 | 只看该作者
在stm32l0xx_nucleo_32.h文件中看到了 定义的Led_TypeDef

使用特权

评论回复
地板
hanzhen654|  楼主 | 2020-3-19 22:51 | 只看该作者
原来是一个 枚举啊,不过为什么要这么做,初始化里一堆【led】,我蒙了

使用特权

评论回复
5
hanzhen654|  楼主 | 2020-3-19 23:04 | 只看该作者
我自己也仿写了一个使用枚举来点亮不同LED的C代码
#include<stdio.h>

typedef enum
{
  LED1 = 1,
  LED2 = 2,
  LED3 = 3
}led_TypeDef;

//LED点亮函数
void LED_ON(led_TypeDef led)
{
        switch(led)
        {
                case LED1:
                        printf("this is LED1 is on\r\n");
                return;
                case LED2:
                        printf("this is LED2 is on\r\n");
                return;
                case LED3:
                        printf("this is LED3 is on\r\n");
                return;
        }
}


使用特权

评论回复
6
hanzhen654|  楼主 | 2020-3-19 23:08 | 只看该作者
问题比较多,有一个地方又看不懂了,LED_PIN[led]  是什么鬼,我**中都是 GPIO_PIN_3 这种形式

使用特权

评论回复
7
hanzhen654|  楼主 | 2020-3-19 23:11 | 只看该作者
F11 跳转到 LED_PI[] 定义处, const uint16_t LED_PIN[LEDn] = {LED3_PIN}; 原来直接等于 LED3_PIN,出现的LEDn和 LED3_PIN都在这里定义了

使用特权

评论回复
8
hanzhen654|  楼主 | 2020-3-19 23:14 | 只看该作者
如果这里的LEDn不是 1是3的话,那个红需要更改了,好奇,于是我想找一下官方的板卡 有多个LED的,看一下问价你怎么写的。

使用特权

评论回复
9
hanzhen654|  楼主 | 2020-3-20 11:13 | 只看该作者
于是我打开了ST提供的 stm32l0538_discovery.c和stm32l0538_discovery.h文件,这里的LEDn的数量为2  包括了LED3和LED4

使用特权

评论回复
10
hanzhen654|  楼主 | 2020-3-20 11:15 | 只看该作者
同样的,在定义 Led_TypeDef 枚举类型中添加了LED4

使用特权

评论回复
11
hanzhen654|  楼主 | 2020-3-20 11:17 | 只看该作者
精彩的地方来了,我们再来看 LED_PIN[LEDn]  数组是如何写的

使用特权

评论回复
12
hanzhen654|  楼主 | 2020-3-20 11:26 | 只看该作者
这样我们就可以不限制的添加我们自己板卡的LED的数量了
#define  LEDn           3    //定义板卡LED的数量
#define  LED1_PIN       GPIO_PIN1
#define  LED2_PIN       GPIO_PIN2
#define  LED3_PIN       GPIO_PIN3

const unsigned int GPIO_Pin[LEDn] = {LED1_PIN,LED2_PIN,LED3_PIN};

typedef enum
{
  LED1 = 0,
  LED2 = 1,
  LED3 = 2
}led_TypeDef;


使用特权

评论回复
13
八层楼| | 2020-4-6 18:26 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
14
观海| | 2020-4-6 18:26 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
15
guanjiaer| | 2020-4-6 18:26 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
16
heimaojingzhang| | 2020-4-6 18:26 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
17
keaibukelian| | 2020-4-6 18:26 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝