TM4C123G学习笔记2——GPIO

这篇博客详细介绍了TM4C123G单片机中GPIO的使用,包括如何通过GPIO输出点亮RGB LED,如何设置GPIO输入以获取按键状态,以及如何实现GPIO中断处理按键事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

GPIO 输出——点亮 RGB LED

GPIO 输入——获取按键状态

GPIO 中断——按键中断


GPIO 输出——点亮 RGB LED

#include "stdint.h"
#include "stdbool.h"
#include "inc\tm4c123gh6pm.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"


#define G_LED GPIO_PIN_1
#define B_LED GPIO_PIN_2
#define R_LED GPIO_PIN_3


//1.系统时钟分频值
//
//SYSCTL_SYSDIV_1  // 振荡器不分频(不可用于PLL)
//SYSCTL_SYSDIV_2  // 振荡器 2分频(不可用于PLL)
//SYSCTL_SYSDIV_3  // 振荡器 3分频(不可用于PLL)
//SYSCTL_SYSDIV_4  // 振荡器 4分频,或对PLL的分频结果为50MHz
//SYSCTL_SYSDIV_5  // 振荡器 5分频,或对PLL的分频结果为40MHz
//SYSCTL_SYSDIV_64 // 振荡器64分频,或对PLL的分频结果为3.125MHz Sandstorm家族最大分频数只能取到16,也就是811系列只能分频到16
//2.使用OSC还是PLL
//
//SYSCTL_USE_PLL   // 采用锁相环PLL作为系统时钟源
//SYSCTL_USE_OSC   // 采用OSC(主振荡器或内部振荡器)作为系统时钟源
//
//3.OSC时钟源选择
//
//SYSCTL_OSC_MAIN  // 主振荡器作为OSC
//SYSCTL_OSC_INT   // 内部12MHz振荡器作为OSC
//SYSCTL_OSC_INT4  // 内部12MHz振荡器4分频后作为OSC
//SYSCTL_OSC_INT30 // 内部30KHz振荡器作为OSC
//SYSCTL_OSC_EXT32 // 外接32.768KHz有源振荡器作为OSC
//
//4.外接晶体频率
//
//SYSCTL_XTAL_1MHZ    // 外接晶体1MHz
//SYSCTL_XTAL_1_84MHZ // 外接晶体1.8432MHz
//SYSCTL_XTAL_2MHZ    // 外接晶体2MHz
//SYSCTL_XTAL_2_45MHZ // 外接晶体2.4576MHz
//SYSCTL_XTAL_3_57MHZ // 外接晶体3.579545MHz
//SYSCTL_XTAL_3_68MHZ // 外接晶体3.6864MHz
//SYSCTL_XTAL_4MHZ    // 外接晶体4MHz
//SYSCTL_XTAL_4_09MHZ // 外接晶体4.096MHz
//SYSCTL_XTAL_4_91MHZ // 外接晶体4.9152MHz
//SYSCTL_XTAL_5MHZ    // 外接晶体5MHz
//SYSCTL_XTAL_5_12MHZ // 外接晶体5.12MHz
//SYSCTL_XTAL_6MHZ    // 外接晶体6MHz
//SYSCTL_XTAL_6_14MHZ // 外接晶体6.144MHz
//SYSCTL_XTAL_7_37MHZ // 外接晶体7.3728MHz
//SYSCTL_XTAL_8MHZ    // 外接晶体8MHz
//SYSCTL_XTAL_8_19MHZ // 外接晶体8.192MHz
//SYSCTL_XTAL_10MHZ   // 外接晶体10MHz
//SYSCTL_XTAL_12MHZ   // 外接晶体12MHz
//SYSCTL_XTAL_12_2MHZ // 外接晶体12.288MHz
//SYSCTL_XTAL_13_5MHZ // 外接晶体13.56MHz
//SYSCTL_XTAL_14_3MHZ // 外接晶体14.31818MHz
//SYSCTL_XTAL_16MHZ   // 外接晶体16MHz
//SYSCTL_XTAL_16_3MHZ // 外接晶体 16.384MHz 5.振荡源禁止
//SYSCTL_INT_OSC_DIS  // 禁止内部振荡器
//SYSCTL_MAIN_OSC_DIS // 禁止主振荡器 振荡源禁止
//SYSCTL_INT_OSC_DIS  // 禁止内部振荡器
//SYSCTL_MAIN_OSC_DIS // 禁止主振荡器

void main(void)
{
    //设置系统时钟为50M,从pll晶振产生
    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);

    //使能GPIOF
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    //设置端口为输出
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, R_LED | G_LED | B_LED);

    while(1)
    {
        GPIOPinWrite(GPIO_PORTF_BASE, R_LED | G_LED | B_LED, R_LED);
        SysCtlDelay(200000);
        SysCtlDelay(200000);
        SysCtlDela
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值