我是靠谱客的博主 整齐老师,这篇文章主要介绍2837xd代码生成模块学习(1)——GPIO模块1 基础模块2 DSP代码生成库,现在分享给大家,希望可以做个参考。

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函数中,只会被执行一次

在这里插入图片描述
在这里插入图片描述

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部