目录
前言
上一篇文章里介绍了关于MC3172评估板及其开发环境的内容,这一篇将通过点亮一个LED灯的实验来了解GPIO_PIN输出的相关内容。
一、通用输入输出接口(GPIO)
MC3172评估板有4组GPIO端口,每组16个IO共有64个IO引脚。通过掩码模式,可实现对特定的 IO读写而不影响其它的IO功能,配合100%单周期指令集,可实现对IO的精确时序控制。每个引脚都可以通过软件配置成输出(推挽或开漏)、 输入(带或不带上拉)或复用的外设功能端口。
二、相关宏定义
1.INTDEV_SET_CLK_RST(DEV_ADDR,value)
#define INTDEV_SET_CLK_RST(DEV_ADDR,value) (*(volatile u32*)(DEV_ADDR))=(value)
这个宏用于对外设进行启动,主要是设置外设使用的时钟频率以及特权组。使能了GPIOx对应的时钟。
(1)DEV_ADDR是GPIOx的外设,可以为GPIOA_BASE_ADDR、GPIOB_BASE_ADDR、GPIOC_BASE_ADDR、GPIOD_BASE_ADDR。
(2)value参数:一般为(运行|线程组别|外设时钟分频设置)。
2. GPIO_SET_OUTPUT_EN_VALUE(GPIO_SEL,mask,value)
#define GPIO_SET_OUTPUT_EN_VALUE(GPIO_SEL,mask,value) (*(volatile u32*)(GPIO_SEL+GPIO_OUTPUT_EN_ADDR))=(value|mask)
这个宏用于使能GPIO口的输入功能。
(1)GPIO_SEL是GPIOx的外设,可以为GPIOA_BASE_ADDR、GPIOB_BASE_ADDR、GPIOC_BASE_ADDR、GPIOD_BASE_ADDR。
(2)mask:一般为IO引脚,可以为GPIO_PIN0-GPIO_PIN15,GPIO_PIN_ALL,或者是多个IO引脚相或(GPIO_PIN0|GPIO_PIN1这种形式)等。
(3)value:该参数为使能或不使能,GPIO_SET_ENABLE使能,GPIO_SET_DISABLE不使能。
3.GPIO_SET_OUTPUT_PIN_TO_1(GPIO_SEL,value)
#define GPIO_SET_OUTPUT_PIN_TO_1(GPIO_SEL,value) (*(volatile u32*)(GPIO_SEL+GPIO_OUT_SET1_ADDR)) =(value&0xffff0000)
这个宏用于把指定管脚输出 1,同时不影响其他管脚值。
4.GPIO_SET_OUTPUT_PIN_TO_0(GPIO_SEL,value)
#define GPIO_SET_OUTPUT_PIN_TO_0(GPIO_SEL,value) (*(volatile u32*)(GPIO_SEL+GPIO_OUT_SET0_ADDR)) =(value&0xffff0000)
这个宏用于把指定管脚输出 0,同时不影响其他管脚值。与3相同。
三、编写程序
在main.c文件中的void thread0_main(void)里编写代码程序如下:
void thread0_main(void)
{
//使能了GPIOA的时钟
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//将PA0设置为输出模式
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN0),GPIO_SET_ENABLE);
//配置默认输出为低电平
GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR,GPIO_PIN0);
while(1) {
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN0);//PA0输出为高电平
}
}
thread_end();
}
四、硬件电路
1.MC3172引脚图
2. LED灯与引脚的连接方式
LED的阳极接PA0,阴极接地。
五、下载程序
将MC3172评估板通过USB口接到电脑,然后打开Release文件夹下的开发板程序下载_v1.1.exe,这时就会识别出GX_LINK#0设备(也有可能是其它名字),点击连接设备,接着选择生成的*.hex固件,再点击烧录固件,最后等到进度条走到100%则下载成功。
六、实验现象
下载成功后连接在PA0的LED灯点亮。
总结
以上就是对MC3172评估板点亮一个LED灯的实验的学习过程记录分享,如果觉得文章有帮助,麻烦帮忙转发,谢谢!