作者:书友76132462 | 来源:互联网 | 2023-10-12 09:46
1、GPIO配置这里只介绍个别常用的配置函数,在手册TivaWare™PeripheralDriverLibrary中可以查到更全面的信息,可以在TI官网下载1)voidSysCt
1、GPIO配置
这里只介绍个别常用的配置函数,在手册TivaWare™ Peripheral Driver Library中可以查到更全面的信息,可以在TI官网下载
1)void SysCtlPeripheralEnable(uint32_t ui32Peripheral)
- 功能:使能外设时钟
- 参数:uint32_t ui32Peripheral:需要使能的外设,在本文中需要使能的外设为GPIO(例如SYSCTL_PERIPH_GPIOF)
- 说明:从使能操作开始到完成需要经过五个时钟周期,在此期间不可访问外设,否则会出现总线错误。
2)void GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins)
- 功能:配置引脚为输出模式
- 参数:
- uint32_t ui32Port :GPIO口的基地址
- uint8_t ui8Pins:引脚(例如GPIO_PIN_1)
3)void GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)
- 功能:写值到指定引脚.
- 参数:
- uint32_t ui32Port:GPIO口的基地制作.
- uint8_t ui8Pins: 引脚,每一位对应不同的引脚,各个引脚对应的二进制位如下,值为1表示这一位对应的引脚用于输出
- uint8_t ui8Val: 每一个二进制位的值就是该二进制位对应引脚的输出值,1表示高电平,0表示低电平
- 说明:例如GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_1|GPIO_PIN_2);表示Pin1和Pin2输出高电平。若引脚被设置为输入,则向该引脚输出是无效的。
4)int32_t GPIOPinRead(uint32_t ui32Port,uint8_t ui8Pins)
- ui32Port: GPIO基地址.
- ui8Pins:每一位表示对应的引脚.
- 说明:返回ui8Pins中取值为1的二进制位表示的引脚的输入值,ui8Pins中取值为0的位对应的引脚输入值为0,返回值只有7:0位是有效值
2、GPIO输出实验
2.1 硬件电路
根据评估板的电路原理图可以看到,控制RGB灯的亮灭状况需要控制PF1、PF2、PF3的电位,且输出高电平时LED被点亮,反之LED熄灭
2.2 配置GPIO
GPIO的有关设置和变量定义在my_led.h和my_led.c中完成,在main.c中调用与LED相关的初始化函数即可
my_led.h
#ifndef __MY_LED_H
#define __MY_LED_H
#include "sys.h"
//sys.h包含了各种必须的头文件#define LED_RED_ON GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1)
//对点亮LED这个操作进行宏定义,方便使用
#define LED_RED_OFF GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0)#define LED_BLUE_ON GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2)
#define LED_BLUE_OFF GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0)#define LED_GREEN_ON GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, GPIO_PIN_3)
#define LED_GREEN_OFF GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_3, 0)//产生其他颜色
//Yellow
#define LED_YELLOW \LED_RED_ON;\LED_GREEN_ON;\LED_BLUE_OFF
//Purple
#define LED_PURPLE \LED_RED_ON;\LED_GREEN_OFF;\LED_BLUE_ON//Cyan
#define LED_CYAN \LED_RED_OFF;\LED_GREEN_ON;\LED_BLUE_ON//定义LED外设的初始化函数
void LED_GPIO_Config(void);#endif
my_led.c
#include "my_led.h"void LED_GPIO_Config(void)
{//LED//使能GPIOF时钟SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF)){}//配置RGB灯的三个引脚为输出模式GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_3);
}
main.c
#include "sys.h"
#ifdef DEBUG
void
__error__(char *pcFilename, uint32_t ui32Line)
{
}
#endifint main(void)
{//初始化函数LED_GPIO_Config();while(1){//// Turn on the LEDLED_RED;// Delay for a bit//SysCtlDelay(2000000);//// Turn on the LEDLED_GREEN;// Delay for a bit//SysCtlDelay(2000000);}
}