当前位置:网站首页>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进行翻转。
边栏推荐
- 一次聊天勾起的回忆
- Don't look for it. All the necessary plug-ins for Chrome browser are here
- Fragmenttabhost implements the interface of housing loan calculator
- Navicat 远程连接Mysql报错1045 - Access denied for user ‘root‘@‘222.173.220.236‘ (using password: YES)
- Bugkuctf-web16 (backup is a good habit)
- Read Day5 30 minutes before going to bed every day_ All key values in the map, how to obtain all value values
- Is the C language too fat
- VIM操作命令大全
- Thinkphp5 how to determine whether a table exists
- How to use PHP spoole to implement millisecond scheduled tasks
猜你喜欢
2837xd code generation - Supplement (1)
How to install PHP in CentOS
QT qlabel style settings
TD conducts functional simulation with Modelsim
分享一篇博客(水一篇博客)
2837xd code generation module learning (4) -- idle_ task、Simulink Coder
Image recognition - data annotation
2837xd code generation - stateflow (1)
一次聊天勾起的回忆
每天睡前30分钟阅读Day6_Day6_Date_Calendar_LocalDate_TimeStamp_LocalTime
随机推荐
并网逆变器PI控制(并网模式)
Image recognition - data annotation
2837xd 代码生成——补充(2)
Timed thread pool implements request merging
Mysql默认事务隔离级别及行锁
C语言之最小数
2837xd 代码生成——StateFlow(3)
Bold prediction: it will become the core player of 5g
MySQL default transaction isolation level and row lock
BugkuCTF-web21(详细解题思路及步骤)
JVM instruction mnemonic
Supplier selection and prequalification of Oracle project management system
Thinkphp5 how to determine whether a table exists
2837xd code generation - Summary
自定義Redis連接池
Read 30 minutes before going to bed every day_ day4_ Files
Record personal understanding and experience of game console configuration
大学生四六级作文模板(自创版,成功跨过六级)
分布式锁的这三种实现方式,如何在效率和正确性之间选择?
Discussion on improving development quality and reducing test bug rate