TM4C123G学习记录(2)--GPIO

  • 为了准备电赛临时学一下TM4C123G,简单记录学习内容
  • 大家可以在这里下载我收集的资源,非常全面,花了很大功夫收集来的,还有书籍、例程代码等
  • 还可以在TI官网下载相关文档TI官网

一、实验简介

简单的GPIO点灯实验,控制板载LED翻转

二、硬件连接

查看电路图
在这里插入图片描述
在这里插入图片描述
可见控制LED是一个三极管开关电路,单片机PF1/PF2/PF3连接到LED_R/LED_B/LED_G,GPIO输出高电平即可点亮二极管

三、相关库函数

(1)void SysCtlPeripheralEnable(uint32_t ui32Peripheral)
  • 功能:使能外设时钟
  • 参数:uint32_t ui32Peripheral 要使能的外设
  • 说明:从写外设使能操作完成到实际上的外设使能间有5个时钟周期的延迟,这期间内访问外设将导致一个总线错误。应注 意确保在这段时间内不访问该外设。
(2)void GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins)
  • 功能:引脚配置为输出模式
  • 参数:
    1. ui32Port GPIO口的基地址
    2. ui8Pins bit-packed格式表示的引脚
  • 说明:要使GPIO引脚做为GPIO输出,必须正确地配置引脚。本函数提供这些引脚的典型配置。引脚使用bit-packed 字节格式表示每一位表示一个要访问的引脚,位0表示引脚0,位1表示引脚1,以此类推。
  • 底层:
    1. void GPIOPadConfigSet(uint32_t ui32Port, uint8_t ui8Pins,uint32_t ui32Strength, uint32_t ui32PinType)设置输出类型和强度
    2. void GPIODirModeSet(ui32Port, ui8Pins, GPIO_DIR_MODE_OUT);设置方向(输入or输出)
(3)void GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)
  • 功能:写值到指定引脚.
  • 参数:
    1. ui32Port GPIO口的基地制作.
    2. ui8Pins bit-packed 格式表示的引脚
    3. ui8Val 将要写入引脚的值.
  • 说明:写相应位的数值到ui8Pins参数指定的引脚,写数值时不影响配置为输入的引脚状态。引脚用 bit-packed 字节格式表示, 每一个位代表一个引脚,位0表示GPIO口的引脚0,位1表示GPIO口的引脚1,以此类推。
(4)不受频率影响的延时函数

四、示例代码

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_types.h"					//通用类型和宏
#include "inc/hw_memmap.h"					//外设和存储器的基地址
#include "driverlib/sysctl.h"				//API函数中外设、状态等的标志
#include "driverlib/gpio.h"

int main(void)
{
	uint8_t ui8LED = 2;	//2 = 0010
	//系统时钟分频器系数|选择外部晶振频率|使用PLL锁相环作为系统时钟源
	SysCtlClockSet(SYSCTL_SYSDIV_6|SYSCTL_XTAL_16MHZ|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN); 
	//使能PF时钟
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);	
	//配置引脚为GPIO输出,底层是GPIOPadConfigSet和GPIODirModeSet																			
	GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);						
	
	while(1)
	{
		// Turn on the LED :PF1(R),PF2(B),PF3(G)
		GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, ui8LED);	

		// Delay for a bit		
		SysCtlDelay(100*(SysCtlClockGet()/3000));
		
		// Cycle through Red, Green and Blue LEDs
		//写入2->4->8(0010->0100->1000)(R->B->G)
		if (ui8LED == 8) 
			ui8LED = 2; 
		else 
			ui8LED = ui8LED*2;																															
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端FFF

所有博文免费阅读,求打赏鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值