我是靠谱客的博主 整齐老师,最近开发中收集的这篇文章主要介绍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函数中,只会被执行一次

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

  // 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代码生成库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部