热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TivaC学习记录(2)——GPIO

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)

  • 功能:配置引脚为输出模式
  • 参数:
    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)
{
}
#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);}
}

 


推荐阅读
author-avatar
书友76132462
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有