GPIO Pin Control SAMC21
У меня возникли проблемы при попытке использовать мой новый SAMC21 Xplained Pro от Atmel. В настоящее время я пытаюсь понять основы Cortex M0+, но я застрял. Я использую ASF в Atmel Studio. Я начал с базового, научившись переключать светодиод с помощью переключателя. Это код 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 ответ
Вы думаете, что код не работает, потому что светодиод постоянно включен (или выключен, это зависит от того, как подключено оборудование)? Это потому, что вы не спите после второго изменения, поэтому выходной уровень 1 устанавливается только на короткий момент (если быть точным, время port_pin_set_output_level
выполнение), и ваш глаз не достаточно быстро, чтобы увидеть это.