当前位置:网站首页>2837xd代码生成模块学习(1)——GPIO模块
2837xd代码生成模块学习(1)——GPIO模块
2022-07-02 06:35:00 【Quikk】
2837xd代码生成模块学习(1)——GPIO模块
上部分主要看的官方例程,对程序运行和模型基本构架有了一个框架式的认识,下一部分主要是对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进行翻转。
边栏推荐
- 攻防世界-Web进阶区-unserialize3
- How to use PHP spoole to implement millisecond scheduled tasks
- Timed thread pool implements request merging
- 2837xd 代码生成——补充(2)
- Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
- BugkuCTF-web21(详细解题思路及步骤)
- 图像识别-数据采集
- C语言之判断直角三角形
- 上班第一天的报错(AWVS卸载不彻底)
- Navicat 远程连接Mysql报错1045 - Access denied for user ‘root‘@‘222.173.220.236‘ (using password: YES)
猜你喜欢

Enterprise level SaaS CRM implementation

How to use PHP spoole to implement millisecond scheduled tasks

Chrome video download Plug-in – video downloader for Chrome

自定义Redis连接池

2837xd 代碼生成——補充(1)

Read Day6 30 minutes before going to bed every day_ Day6_ Date_ Calendar_ LocalDate_ TimeStamp_ LocalTime

保存视频 opencv::VideoWriter

2837xd 代码生成——补充(1)

Don't look for it. All the necessary plug-ins for Chrome browser are here

DTM distributed transaction manager PHP collaboration client V0.1 beta release!!!
随机推荐
因上努力,果上随缘
2837xd Code Generation - Supplement (1)
分布式锁的这三种实现方式,如何在效率和正确性之间选择?
2837xd code generation - Supplement (1)
Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别
vs+qt 设置应用程序图标
2837xd 代碼生成——StateFlow(4)
Save video opencv:: videowriter
Alibaba /热门json解析开源项目 fastjson2
Creation and jump of activity
tinyxml2 读取和修改文件
Activity的创建和跳转
C语言之判断直角三角形
web安全与防御
Inverter Simulink model -- processor in the loop test (PIL)
Chrome browser plug-in fatkun installation and introduction
What are the waiting methods of selenium
Int to string, int to qstring
QT signal slot summary -connect function incorrect usage
2837xd 代码生成——总结篇