概述
2837xd代码生成模块学习(1)——GPIO模块
- 1 基础模块
- 2 DSP代码生成库
- 2.1 GPIO_OUT
- 2.2 GPIO_IN
- 2.3 GPIO_INT
上部分主要看的官方例程,对程序运行和模型基本构架有了一个框架式的认识,下一部分主要是对c2000库中的每个模块结合自己的认识进行自己搭建模型,达到学习模块的效果。
模型链接: 模型链接
1 基础模块
这里仅仅放一张图,有需求自行进行深入学习即可:
2 DSP代码生成库
2.1 GPIO_OUT
从Library中进入相应硬件的元件页面(这里选的是2837xd),先看看GPIO输出模块。先对环境进行配置,基本方法在环境搭建文章中进行了讲解(链接),这里需要增加勾选一项。
勾选后,会使生成的变量以结构体的形式存在。
GPIO out参数配置如下:
图中的GPIO Group用来选择操作的GPIO,勾选对应GPIO后。接入Constant(为1输出高电平,为0输出低电平),勾选Toggle意思是进行以Solver的步长进行翻转。
2.2 GPIO_IN
GPIO_IN模块的测试这里采用,外部模式进行配置(也就是之前文章讲的SCI链接)。先按照上述文章进行配置SCI_A。
GPIO_IN参数配置如上述,跟GPIO_OUT相仿,这里不再赘述。
GPIO_in模块连接的是硬件的KEY,GPIO_OUT连接的是LED。现象是当按键按下时,LED灯亮,松开后LED灯灭。
2.3 GPIO_INT
GPIO引脚外部中断测试模型:
我使用的板卡GPIO_67和GPIO_84分别连接了两个LED(低电平点亮)。
先来一个一个模块的看:
1.外部中断服务模块
这里PIE_1.4和PIE_1.5分别是外部中断1和外部中断2的中断函数。
2.然后使用一个Demux模块将中断分别在两个触发函数里面实现:
触发函数在Library中的simulink下的subsystems下面。里面的Function可以自己更名,底下的GPIO_67也是自己更改的名字。
3.触发函数内部是一个实现GPIO翻转的模块:Counter Limited在Simulink -> source下,功能是产生一个0到Upper limit(参数) 循环的数,这里Upper Limit为1,即函数每执行一次,会在0-1之间循环。因此实现了GPIO的翻转。
4.系统初始化模块:在系统初始化模块里实现了定义GPIO66和GPIO133为外部中断输入引脚。这里添加的代码都会再生成程序的Initialize函数中,只会被执行一次。
// GPIO66 are input
EALLOW;
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 0; // GPIO
GpioCtrlRegs.GPCDIR.bit.GPIO66 = 0; // input
GpioCtrlRegs.GPCQSEL1.bit.GPIO66 = 0; // XINT1 Synch to SYSCLKOUT only
EDIS;
EALLOW;
GpioCtrlRegs.GPEMUX1.bit.GPIO133 = 0; // GPIO
GpioCtrlRegs.GPEDIR.bit.GPIO133 = 0; // input
GpioCtrlRegs.GPEQSEL1.bit.GPIO133 = 0; // XINT1 Synch to SYSCLKOUT only
EDIS;
// GPIO66 is XINT1
GPIO_SetupXINT1Gpio(66);//K1 GPIO66
GPIO_SetupXINT2Gpio(133);//K1 GPIO133
// Configure XINT1
XintRegs.XINT1CR.bit.POLARITY = 0; // Falling edge interrupt
XintRegs.XINT2CR.bit.POLARITY = 0; // Falling edge interrupt
// Enable XINT1 and XINT2
XintRegs.XINT1CR.bit.ENABLE = 1; // Enable XINT1
XintRegs.XINT2CR.bit.ENABLE = 1; // Enable XINT1
另外还有一种方式是直接在参数列表中进行相应的设置(两种方式实现效果一模一样):
Configuration Parameters -> Hardware Implementation -> Target hardware resources ->External interrupt
5.程序运行结果,按下按键,LED进行翻转。
最后
以上就是整齐老师为你收集整理的2837xd代码生成模块学习(1)——GPIO模块1 基础模块2 DSP代码生成库的全部内容,希望文章能够帮你解决2837xd代码生成模块学习(1)——GPIO模块1 基础模块2 DSP代码生成库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复