我的DSP28335学习日记(第2期):dsp28335之GPIO口输出配置 一、 配置 GPIO 输入/输出模式有几步以 GPIO34 输出为例在 DSP28335 中配置一个引脚总共分4 步注意除第一步外其余必须在EALLOW和EDIS之间进行使能系统时钟调用InitSysCtrl()这也包括了看门狗和 PLL 的配置。配置复用寄存器 (MUX)将引脚从外设功能如 EPWM、SCI 等切换为普通 GPIO 功能。注意GPIO34属于Port B必须用GPBMUX1不能用GPAMUX1配置方向寄存器 (DIR)设置引脚为输入0或输出1。使用GPBDIR配置输出电平可选设置初始状态的高低电平。使用GPBSET拉高GPBCLEAR拉低或者GPBTOGGLE翻转// 1. 通用GPIO初始化必须引用清空所有引脚状态 InitGpio(); // 2. 配置 GPIO34 (Port B 组) 为普通输出模式 EALLOW; // 解锁受保护寄存器 GpioCtrlRegs.GPBMUX1.bit.GPIO34 0; // 设为普通 GPIO而不是 XREADY 等外设功能 GpioCtrlRegs.GPBDIR.bit.GPIO34 1; // 设为输出模式 (1为输出0为输入) EDIS; // 重新上锁保护寄存器 // 3. 初始状态拉高引脚让 LED 初始为熄灭状态 GpioDataRegs.GPBSET.bit.GPIO34 1;二、 一个完整的主函数最基础需要引用的函数有哪些如果要在main.c里实现电平反转和阻塞式延时点灯必须引用的函数/宏包括InitSysCtrl();TI 官方库函数初始化系统时钟、看门狗等InitGpio();TI 官方库函数将 GPIO 全部恢复默认状态虽然在主函数中我们会单独配置GPIO34但调用它是良好习惯EALLOW;和EDIS;宏定义解锁和锁定受保护的寄存器DELAY_US();宏定义来自DSP2833x_Examples.h实现微秒级阻塞延时直接对寄存器赋值GpioCtrlRegs和GpioDataRegs不需要调用函数三、 实现电平反转 延时阻塞式的完整main.c代码根据你的原理图3V3 → 电阻 → LED → GPIO34写 0 灭拉低写 1 亮拉高。以下代码直接复制即可运行注意需要提前在工程里包含库文件。#include DSP2833x_Device.h #include DSP2833x_Examples.h // 必须要包含否则DELAY_US无法识别 void main(void) { // 1. 系统初始化必须引用包含时钟、看门狗 InitSysCtrl(); // 2. 通用GPIO初始化必须引用清空所有引脚状态 InitGpio(); // 3. 配置 GPIO34 (Port B 组) 为普通输出模式 EALLOW; // 解锁受保护寄存器 GpioCtrlRegs.GPBMUX1.bit.GPIO34 0; // 设为普通 GPIO而不是 XREADY 等外设功能 GpioCtrlRegs.GPBDIR.bit.GPIO34 1; // 设为输出模式 (1为输出0为输入) EDIS; // 重新上锁保护寄存器 // 4. 初始状态拉高引脚让 LED 初始为熄灭状态 GpioDataRegs.GPBSET.bit.GPIO34 1; // 5. 主循环阻塞式点灯 for(;;) { // 使用 GPBTOGGLE 寄存器直接翻转 GPIO34 的电平 GpioDataRegs.GPBTOGGLE.bit.GPIO34 1; // 使用 DELAY_US 进行微秒级阻塞延时 // 参数为微秒数500000us 0.5秒 DELAY_US(500000); } }