GPIO 引脚控制 SAMC21

Posted

技术标签:

【中文标题】GPIO 引脚控制 SAMC21【英文标题】:GPIO Pin Control SAMC21 【发布时间】:2017-12-02 01:05:27 【问题描述】:

我在尝试使用来自 Atmel 的新 SAMC21 Xplained Pro 时遇到问题。我目前正在尝试了解 Cortex M0+ 的基础知识,但我卡住了。我在 Atmel Studio 中使用 ASF。我从基础开始,学习如何用开关切换 LED。这是 Atmel 的代码,完美无瑕:

void configure_port_pins(void)

     struct port_config config_port_pin;
     port_get_config_defaults(&config_port_pin);
     config_port_pin.direction = PORT_PIN_DIR_INPUT;
     config_port_pin.input_pull = PORT_PIN_PULL_UP;
     port_pin_set_config(BUTTON_0_PIN, &config_port_pin);
     config_port_pin.direction = PORT_PIN_DIR_OUTPUT;
     port_pin_set_config(LED_0_PIN, &config_port_pin);

int main (void)

    system_init();
    configure_port_pins();
    while (true) 
       bool pin_state = port_pin_get_input_level(BUTTON_0_PIN);
       port_pin_set_output_level(LED_0_PIN, !pin_state);
    

然后我想尝试一些更简单的东西,比如:

int main (void)

    system_init();
    configure_port_pins();
    port_pin_set_output_level(LED_0_PIN,0);

    while (1)
    
        port_pin_set_output_level(LED_0_PIN,0);
        delay_ms(500);
        port_pin_set_output_level(LED_0_PIN,1);
    

但它不起作用。就像它不识别 bool 数据类型一样。也许我错过了一些东西。谢谢你的回答。

【问题讨论】:

【参考方案1】:

您认为代码不工作是因为 led 一直亮着(或不亮,这取决于硬件的连接方式)?这是因为你在第二次更改后没有睡觉,所以输出级别 1 只设置了很短的时间(准确地说,port_pin_set_output_level 执行的时间),你的眼睛不够快,看不到它。

【讨论】:

是的,你是对的,但这也不起作用:while (1) port_pin_set_output_level(LED_0_PIN,0);延迟毫秒(500); port_pin_set_output_level(LED_0_PIN,1);延迟毫秒(500);

以上是关于GPIO 引脚控制 SAMC21的主要内容,如果未能解决你的问题,请参考以下文章

esp8266 网页控制4个GPIO引脚状态实例

Arduino ESP32配置静态IP并通过网页控制GPIO引脚

如何通过 Apache Web 服务器控制 Raspberry Pi 的串行 GPIO 引脚

MicroPython ESP32 GPIO引脚输入输出示例

esp32cam板载led是那个引脚

ARM芯片学习(S5PV210开发)——GPIO控制LED