首先学习的模块就是GPIO,学习完后我们可以做到简单的点灯程序。
I/O口配置步骤
1、计划自己准备使用的设备引脚
2、启动上拉电阻使能(使用GPxPOD寄存器)
3、选择输入资格(使用GPxQSELN寄存器,同步、设置采样窗口)
4、选择I/O口的方向(使用GPxDIR寄存器)
5、选择低功耗模式唤醒源
6、选择外部中断源
寄存器分类
控制寄存器包括功能选择寄存器(GPxMUX )、方向选择寄存器(GPxDIR )、上拉功能选择寄存器(GPxPOD )、输入限定寄存器(GPxQSELN );
数据寄存器包括数据寄存器(GPxDAT )、置位寄存器(GPxSET )、清除寄存器(GPxCLEAR )、反转寄存器(GPxTOGGLE );
功能:GPIO可以是普通的输入输出接口,也可以复用为其他的功能接口;复用功能表如下图所示
当选择引脚使用为输入引脚时,上拉选择寄存器被置1。默认为0。
方向选择寄存器的使用,置0为输入引脚,置1为输出引脚。
输入限定资格寄存器,当引脚设置为输入时,确认采样周期系统时钟同步,确认采样样本数。
数据寄存器:若为输入接口,置0输入低电平,置1输入高电平;若为输出接口,置0输出低电平,置1输出高电平。
置位寄存器、清除寄存器、反转寄存器,顾名思义,只有高电平时有效。
简单的,点灯程序看一下。设置GPIO输出电平控制LED亮灭,添加延时达到跑马灯的效果。
#include "F28x_Project.h"
//
// Defines
//
#define DEVICE_GPIO_PIN_LED1 31
#define DEVICE_GPIO_PIN_LED2 34
//
// Main
//
void main(void)
{
//
// Initialize device clock and peripherals
//
InitSysCtrl();
//
// Initialize GPIO and configure the GPIO pin as a push-pull output
//
InitGpio();
GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED1, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED1, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED2, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED2, GPIO_OUTPUT, GPIO_PUSHPULL);
//
// Initialize PIE and clear PIE registers. Disables CPU interrupts.
//
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
//
// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
//
InitPieVectTable();
//
// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
//
EINT;
ERTM;
//
// Loop Forever
//
for(;;)
{
//
// Turn on LED
//
GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 0);
GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 1);
//
// Delay for a bit.
//
DELAY_US(500000);
//
// Turn off LED
//
GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 1);
GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 0);
//
// Delay for a bit.
//
DELAY_US(500000);
GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 0);
GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 0);
DELAY_US(500000);
GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 1);
GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 1);
DELAY_US(500000);
}
}
标签:LED1,PIN,WritePin,F28004X,DEVICE,寄存器,系列学习,GPIO
From: https://blog.csdn.net/Dlyuhh/article/details/137012692