bestdesign11 发表于 2021-1-22 14:49

修改LED的GPIO

您好,想问一下在库中都定义了GPIO_PIN_x,如果在LED的程序中想修改GPIO调用几,就那个口亮,这么修改可以吗?6口,7口的交替闪烁.
      Led_On(6);
      delay_ms(500);
      Led_Off(6);
      delay_ms(500);


      Led_On(7);
      delay_ms(500);
      Led_Off(7);
      delay_ms(500);


在LED_On中做如下修改:
void Led_On(int GPIO_Number)
{
    GPIO_ResetBits(GPIOC, "GPIO_Pin_"&char(GPIO_Number);
}

void Led_Off(int GPIO_Number)
{
    GPIO_SetBits(GPIOC, "GPIO_Pin_"&char(GPIO_Number);
}


编译不通过{:smile:},如果自己定义调用的GPIO呢?

laocuo1142 发表于 2021-1-22 15:11

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

    /* Configure PA.13 (JTMS/SWDAT), PA.14 (JTCK/SWCLK) and PA.15 (JTDI) as
       output push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    /* Configure PB.03 (JTDO) and PB.04 (JTRST) as output push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
    GPIO_Init(GPIOB, &GPIO_InitStructure);应该这样初始化吧

bestdesign11 发表于 2021-1-22 15:27

谢谢楼上,

不能调用哪个,初始化哪个吗?

例如我想调用6,就用void Led_Init(int GPIO_Number);Led_Init(6); 函数中怎么写?

bestdesign11 发表于 2021-1-22 16:53

搞定了,打扰到大家了.因为定义的是无符号整数.所以函数的参数应该是uint16_t

单片小菜 发表于 2021-2-24 08:07

函数的定义尤为重要,特别是变量定义。

xixi2017 发表于 2021-2-24 17:23

你直接操作对应的PIN和GPIO就行了。

玛尼玛尼哄 发表于 2021-2-25 11:34

要看引用的什么。

天意无罪 发表于 2021-2-26 12:28

用宏定义啊就可以解决这个问题啊

Woo0o 发表于 2021-2-27 23:04

宏定义可以~
页: [1]
查看完整版本: 修改LED的GPIO