我在尝试使用来自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数据类型一样。也许我想念一些东西。感谢您的回答。

最佳答案

您认为代码不起作用是因为led一直亮着(或熄灭,取决于硬件的连接方式)?这是因为您在第二次更改后就没有睡觉,因此仅将输出级别1设置为一小会儿(准确地说,是执行port_pin_set_output_level的时间),并且您的眼睛不够快才能看到它。

关于c - GPIO引脚控制SAMC21,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47603538/

10-10 07:58