500|0

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【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

 

此帖出自汽车电子论坛
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表