【AT32A403A 车规MCU开发板】搭建环境并测试GPIO驱动LED
[复制链接]
搭建开发环境并测试GPIO驱动LED。
一、资料下载
1.1、AT32A403A芯片官网资料
地址:https://www.arterytek.com/cn/product/AT32A403A.jsp#Resource
1.2、芯片内部资源
开发板上使用是芯片型号是AT32A403AVGT7
1.3、下载MDK环境需要的文件
二、硬件部分
LED指示灯使用下面接口
三、程序部分
3.1、led.c
#include "main.h"
void init_led(void)
{
gpio_init_type gpio_init_struct;
LD2_GPIO_CLK_ENABLE();
LD3_GPIO_CLK_ENABLE();
LD4_GPIO_CLK_ENABLE();
gpio_default_para_init(&gpio_init_struct);
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = LD2_PIN;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(LD2_GPIO_PORT, &gpio_init_struct);
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = LD3_PIN;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(LD3_GPIO_PORT, &gpio_init_struct);
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
gpio_init_struct.gpio_pins = LD4_PIN;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(LD4_GPIO_PORT, &gpio_init_struct);
led2_off();
led3_off();
led4_off();
}
3.2、led.h
#ifndef __LED_H
#define __LED_H
#define LD2_PIN GPIO_PINS_13
#define LD2_GPIO_PORT GPIOD
#define LD2_GPIO_CRM_CLK CRM_GPIOD_PERIPH_CLOCK
#define LD3_PIN GPIO_PINS_14
#define LD3_GPIO_PORT GPIOD
#define LD3_GPIO_CRM_CLK CRM_GPIOD_PERIPH_CLOCK
#define LD4_PIN GPIO_PINS_15
#define LD4_GPIO_PORT GPIOD
#define LD4_GPIO_CRM_CLK CRM_GPIOD_PERIPH_CLOCK
#define LD2_GPIO_CLK_ENABLE() do{ crm_periph_clock_enable(LD2_GPIO_CRM_CLK, TRUE); }while(0)
#define LD2_GPIO_CLK_DISABLE() do{ crm_periph_clock_enable(LD2_GPIO_CRM_CLK, FALSE); }while(0)
#define LD3_GPIO_CLK_ENABLE() do{ crm_periph_clock_enable(LD3_GPIO_CRM_CLK, TRUE); }while(0)
#define LD3_GPIO_CLK_DISABLE() do{ crm_periph_clock_enable(LD3_GPIO_CRM_CLK, FALSE); }while(0)
#define LD4_GPIO_CLK_ENABLE() do{ crm_periph_clock_enable(LD4_GPIO_CRM_CLK, TRUE); }while(0)
#define LD4_GPIO_CLK_DISABLE() do{ crm_periph_clock_enable(LD4_GPIO_CRM_CLK, FALSE); }while(0)
#define led2_on() gpio_bits_reset(LD2_GPIO_PORT, LD2_PIN)
#define led2_off() gpio_bits_set(LD2_GPIO_PORT, LD2_PIN)
#define led2_tog() gpio_input_data_bit_read(LD2_GPIO_PORT, LD2_PIN)?\
gpio_bits_reset(LD2_GPIO_PORT, LD2_PIN):\
gpio_bits_set(LD2_GPIO_PORT, LD2_PIN)
#define led3_on() gpio_bits_reset(LD3_GPIO_PORT, LD3_PIN)
#define led3_off() gpio_bits_set(LD3_GPIO_PORT, LD3_PIN)
#define led3_tog() gpio_input_data_bit_read(LD3_GPIO_PORT, LD3_PIN)?\
gpio_bits_reset(LD3_GPIO_PORT, LD3_PIN):\
gpio_bits_set(LD3_GPIO_PORT, LD3_PIN)
#define led4_on() gpio_bits_reset(LD4_GPIO_PORT, LD4_PIN)
#define led4_off() gpio_bits_set(LD4_GPIO_PORT, LD4_PIN)
#define led4_tog() gpio_input_data_bit_read(LD4_GPIO_PORT, LD4_PIN)?\
gpio_bits_reset(LD4_GPIO_PORT, LD4_PIN):\
gpio_bits_set(LD4_GPIO_PORT, LD4_PIN)
void init_led(void);
#endif
3.3、main.c
#include "main.h"
int main(void)
{
system_clock_config();
delay_init();
init_led();
while(1)
{
led2_tog();
delay_ms(100);
led3_tog();
delay_ms(100);
led4_tog();
delay_ms(100);
}
}
四、程序运行
led
|