TM4C123G学习笔记(2)——GPIO

 

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)

  • 功能:配置引脚为输出模式
  • 参数:
    1. uint32_t ui32Port :GPIO口的基地址
    2. uint8_t ui8Pins:引脚(例如GPIO_PIN_1)

3)void GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)

  • 功能:写值到指定引脚.
  • 参数:
    1. uint32_t ui32Port:GPIO口的基地制作.
    2. uint8_t ui8Pins: 引脚,每一位对应不同的引脚,各个引脚对应的二进制位如下,值为1表示这一位对应的引脚用于输出
    3. 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)

  • 功能:读取指定GPIO指定引脚的输入
  • 参数:
  1. ui32Port: GPIO基地址.
  2. 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)
{
}
#endif




int main(void)
{
	//初始化函数
    LED_GPIO_Config();

    while(1)
    {
        //
        // Turn on the LED
				LED_RED;
        // Delay for a bit
        //
        SysCtlDelay(2000000);
				
        //
        // Turn on the LED
				LED_GREEN;
        // Delay for a bit
        //
        SysCtlDelay(2000000);
			
    }
}

2.3 代码下载

以上代码可以在此下载

https://download.csdn.net/download/SStegosaurus/12738499

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值