DSP28335_Control suit(2)_Example_2833xGpioSetup

原理图画的并不是很好,所以看不出对应的引脚。
这里写图片描述
结合实际测试,所谓的LED: D3 为 GPIO1,D4为GPIO
首先说一下88个复用IO口
由于复用IO口是88个,GPIO0-GPIO87
所以我们需要对其进行整理:
A:(GPIO 0 ~GPIO 31) GPIOA
B:(GPIO32~GPIO 63) GPIOB
B:(GPIO32~GPIO 63) GPIOC
这里参照官方例子程序,最终成为了这四行代码非常关键:

// Enable an GPIO output on GPIO1, set it high  D4
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // Enable pullup on GPIO6
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;  // GPIO1 = GPIO1
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;   // GPIO1 = output
GpioDataRegs.GPASET.bit.GPIO1 = 1;   // Load output latch

这时候我们就会发现一个奇怪的语句:

GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // Enable pullup on GPIO6

Enable pullup 表示的含义是上拉,及内部上拉
我们测试一下如果删掉这条语句在编译的过程中会出现的情况:
发现内部上拉并不影响其功能。
经过测试上述的IO口测试得到一些结论:
1. GPIO控制寄存器在案例中并没有什么太大用处。
这里需要了解一个上拉,内部上拉。

GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // Enable pullup on GPIO6

2.GPxMUX寄存器(多路复用寄存器)
例子:

GpioCtrlRegs.GPAMUX1.bit.GPIO48 = 0;  //设置为数字I/O口模式
GpioCtrlRegs.GPAMUX1.bit.GPIO2= 1;  //设置为PWM模式
GpioCtrlRegs.GPAMUX1.bit.GPIO18= 3;  //设置为CANRXA

3.GPxDIR寄存器(方向寄存器)

GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;   // GPIO1 = output 设置为输出
GpioCtrlRegs.GPADIR.bit.GPIO1 = 0;   // GPIO1 = input 设置为输入

GPIO数据类寄存器
1. GpxDAT寄存器(数据寄存器)
2. GPxSET寄存器(置位寄存器),若引脚设置为输出,向该寄存器相应位写1会驱动对应的引脚为高电平,写0无影响。
3. GPxCLEAR寄存器(置位寄存器),若引脚设置为输出,向该寄存器相应位写1会驱动对应的引脚为低电平,写0无影响。
4. GPxTOGGLE寄存器(状态翻转寄存器)
若引脚为数字输出,向该寄存器相应位写1会对驱动引脚由低电平变为高电平,或由高电平变为低电平,写0无影响。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值