本文共 2101 字,大约阅读时间需要 7 分钟。
F28335微控制器拥有88个复用IO端口,划分为A、B、C三个分组。
GPIO被划分为三个寄存器组:GPIO控制寄存器(GpioCtrlRegs)、GPIO中断寄存器(GpioIntRegs)和GPIO数据寄存器(GpioDataRegs)。其中,前两个寄存器组为读写式寄存器。
用于配置各复用IO端口的基本功能,包括功能选择、数据方向和上拉控制。支持A、B分组配置,C分组功能较为简洁。
实现通用端口的数据操作,包括读取、置位、清零和翻转。每个端口配备四个寄 storage器,其中数据寄存器为状态值直接反映。但需注意操作可能影响多个端口。
// GPIO控制寄存器struct GpioCtrlRegs { union GpACTRL Reg gpACTRL; union GpA1 Reg gpAQSEL1; union GpA2 Reg gpAQSEL2; union GpA1 Reg gpAMUX1; union GpA2 Reg gpAMUX2; union GpADat Reg gpadir; union GpADat Reg gpapud; Uint32 reserved1; union GpBCtrl Reg gpBCtrl; union GpB1 Reg gpBQSEL1; union GpB2 Reg gpBQSEL2; union GpB1 Reg gpBMUX1; union GpB2 Reg gpBMUX2; union GpBDat Reg gpBDir; union GpBDat Reg gpBPUD; Uint16 reserved2[8]; union GpC1 Reg gpCMUX1; union GpC2 Reg gpCMUX2; union GpCDat Reg gpCDir; union GpCDat Reg gpCPUD;};// GPIO中断寄存器struct GpioIntRegs { union GpioXInt Reg gpioXInt1Sel; union GpioXInt Reg gpioXInt2Sel; union GpioXInt Reg gpioXNmiSel; union GpioXInt Reg gpioXInt3Sel; union GpioXInt Reg gpioXInt4Sel; union GpioXInt Reg gpioXInt5Sel; union GpioXInt Reg gpioXInt6Sel; union GpioXInt Reg gpioXInt7Sel; union GpADat Reg gpIOpMSel;}; // 初始化GPIO端口配置void InitKeyGpio() { GpioCtrlRegs.gpadir = GPIO_OUTPUT; GpioCtrlRegs.gpapud = GPIO_HIGH; GpioCtrlRegs.gpBDir = GPIO_OUTPUT; GpioCtrlRegs.gpBPUD = GPIO_HIGH; GpioCtrlRegs.gpCMux1 = GPIO müşCF; GpioIntRegs.gpioXInt1Sel = GPIO13;}// 中断服务程序interrupt void IsrXint1() { PieCtrlRegs.pieCtrl.bit.enPie = 1; GpioDataRegs.gpAtoGgle.bit.GPIO6 = 1; // 刷新LED1 GpioDataRegs.gpBtoGgle.bit.GPIO7 = 1; // 刷新LED2 Delay_Us(10000);} F28335的GPIO配置可满足多种复用IO需求,但在操作时需注意寄存器特性和潜在副作用。通过合理配置和谨慎使用,可实现高效、可靠的I/O控制。
转载地址:http://ryztz.baihongyu.com/