DSP实验四、TMS320F28335 定时器 中断 IO中断 控制LED亮灭
更新时间:2023-12-02 02:13:01 阅读量: 教育文库 文档下载
- DSp实验四综合实验推荐度:
- 相关推荐
继续我的第四个实验;实现定时器中断函数处理LD4翻转、按键IO中断控制LD3翻转;
学习目的:中断寄存器的设置,IO中断、定时器中断的使用,
F28335共有三个定时器:timer0、timer1、timer2(timer2也可用于DSP/BIOS);
功能描述:
上电默认LD3、LD4灭;
初始化完成后,LD4以1HZ(1S)频率做状态翻转;LD3接受按键控制,每触发一次按键,状态翻转一次。 电路连接说明:
LD4、LD3设置为通用GPIO 上拉输出初始化后默认为输出LED灯灭状态;LD4、LD3控制LED灯的负极,如下图;
本次实验选用定时器0,程序时刻读取计数器的值,当值为0时,产生定时器0中断,LD4状态翻转;
IO按键SW12中断控制LD3状态翻转。
定时器0中断程序设计说明:
步骤一、定时器0的预定标寄存器和计数器设置:定时器输入时钟为sysclkout(=135MHz),
1、 如果定时1S(即1Hz)中断一次(即计数结束),1Hz=135Mhz/1350/100000
预定标寄存器(即分频器)设为1350,计数器设为100000;
2、 如果定时1ms(即1000Hz)中断一次,计算公式为:1000Hz=135Mhz/1350/100
预定标寄存器同样设为1350,计数器设为100; 赋值语句如下:
//定时器0 设为1Hz = 135MHz/(1350*100000)
CpuTimer0Regs.PRD.all = 100000;//计数周期寄存器,100000周期后计数器减为0 CpuTimer0Regs.TPR.bit.TDDR = 1350& 0xFF;//0x546 预定标寄存器(预分频器)
CpuTimer0Regs.TPRH.bit.TDDRH = (1350>>8) & 0x00FF;//0x546 预定标寄存器(预分频器)
步骤二、
a) 设置定时器0相关中断寄存器使能定时器0中断,即CpuTimer0Regs.TCR.bit.TIE = 1; //
使能定时器0中断 b) 设置PIE级相关中断寄存器定时器0中断所在PIE组使能,即PIEIERx寄存器设置 c) 设置CPU级中断相关寄存器 CPU级使能上述PIE对应的通道,即IER寄存器设置 步骤三、
中断向量入口映射位置设置,如下: EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = &cpu_timer0_isr; //将中断函数物理地址赋值给中断向量入口 PieVectTable.XINT3 = &key_GPIO50_isr;
EDIS; // This is needed to disable write to EALLOW protected registers
IO中断程序设计说明:
步骤一、
设置IO引脚功能复用寄存器为普通IO、设为上拉、输入状态、使能引脚滤波功能; 外部中断源选择寄存器设置:如GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL=50;//按键引脚编号设置
步骤二、 使能外部中断源中断;XIntruptRegs.XINT3CR.bit.ENABLE=1;//使能中断 设置触发方式:XIntruptRegs.XINT3CR.bit.POLARITY=0;//下降沿触发
剩余步骤同定时器0中断的设置。
注意:
1、 在对分频寄存器设置时出现问题,TDDR、TDDRH是两个8位寄存器组成的16位寄
存器。
2、 在对外部中断源选择寄存器设置时,应增加EALLOW、EDIS
源程序如下:
#include\// DSP2833x Headerfile Include File #include\// DSP2833x Examples Include File
// Prototype statements for functions found within this file.
__interruptvoidcpu_timer0_isr(void); __interruptvoidkey_GPIO50_isr(void);
#define LD3_ON() #define LD3_OFF()
#define LD4_ON() #define LD4_OFF()
#define Key_SW12() /* * main.c */
intmain(void) {
//GPIO50 按键矩阵SW12输入端
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;//0 gpio mode GpioCtrlRegs.GPBDIR.bit. GPIO50 = 0;//1 output 0 input
GpioCtrlRegs.GPBPUD.bit. GPIO50 = 0;//1 enable pullup 0 disable pullup GpioCtrlRegs.GPBCTRL.bit.QUALPRD2= 200;//采样周期=2*Tsysclkout*200 GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 2;//采样窗内3次采样结构相同 //GPIO34 LD4 控制LED负极
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;//0 gpio mode GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//1 output 0 input
GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;//1 enable pullup 0 disable pullup EALLOW;
//GPIO0 LD3 控制LED负极
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;//0 gpio mode GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;//1 output 0 input
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//1 enable pullup 0 disable pullup InitPieCtrl(); InitPieVectTable(); InitGpio(); InitSysCtrl(); DINT; IER = 0x0000; IFR = 0x0000;
GpioDataRegs.GPBDAT.bit.GPIO50
GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1 GpioDataRegs.GPBSET.bit.GPIO34
= 1
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1 GpioDataRegs.GPASET.bit.GPIO0
= 1
#define LD3_TOGGLE() GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1
#define LD4_TOGGLE() GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1
//GPIO53 按键矩阵负极输出0
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;//0 gpio mode GpioCtrlRegs.GPBDIR.bit. GPIO53 = 1;//1 output 0 input
GpioCtrlRegs.GPBPUD.bit. GPIO53 = 0;//1 enable pullup 0 disable pullup GpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;//该引脚输出0 LD3_OFF();//默认输出灭状态 LD4_OFF(); EDIS;
//定时器0 设为1Hz = 135MHz/(1350*100000)
CpuTimer0Regs.PRD.all = 100000;//计数周期寄存器,100000周期后计数器减为0 CpuTimer0Regs.TPR.bit.TDDR = 1350& 0xFF;//0x546 预定标寄存器(预分频器)
CpuTimer0Regs.TPRH.bit.TDDRH = (1350>>8) & 0x00FF;//0x546 预定标寄存器(预分频器) CpuTimer0Regs.TCR.bit.TSS = 1; //1停止定时器工作 0启动定时器 CpuTimer0Regs.TCR.bit.TIE = 1; //使能定时器0中断
CpuTimer0Regs.TCR.bit.TRB = 1; //重载定时器计数器和预分频器 // Interrupts that are used in this example are re-mapped to // ISR functions found within this file.
EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TINT0 = &cpu_timer0_isr;//将中断函数赋值给中断向量入口 PieVectTable.XINT3 = &key_GPIO50_isr;
EDIS; // This is needed to disable write to EALLOW protected registers PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能PIE中断控制器
IER|=M_INT1;//因为定时器0中断属于CPU中通用 INT1~INT14 中断内的INT1 PieCtrlRegs.PIEIER1.bit.INTx7=1;//使能PIE组1 TINT0中断 //GPIO 外部中断功能设置
EALLOW; // This is needed to write to EALLOW protected registers
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL=50;//按键引脚编号设置该寄存器受EALLOW控制 EDIS; // This is needed to disable write to EALLOW protected registers XIntruptRegs.XINT3CR.bit.ENABLE=1;//使能中断 XIntruptRegs.XINT3CR.bit.POLARITY=0;//下降沿触发 PieCtrlRegs.PIEIER12.bit.INTx1=1;//使能PIE组12 XINT3中断
IER|=M_INT12;//因为XINT3 属于CPU中通用 INT1~INT14 中断内的INT12 EINT;
CpuTimer0Regs.TCR.bit.TSS = 0; //1停止定时器工作 0启动定时器
}
while(1) { }
;
//定时器0中断处理函数
__interruptvoidcpu_timer0_isr(void) { }
//IO中断处理函数
__interruptvoidkey_GPIO50_isr(void) { }
if(PieCtrlRegs.PIEIFR12.bit.INTx1==1) ;//清中断标志位
LD3_TOGGLE() ;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP12;
if(CpuTimer0Regs.TCR.bit.TIF==1) CpuTimer0Regs.TCR.bit.TIF=1;//清中断标志位
LD4_TOGGLE() ;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
正在阅读:
DSP实验四、TMS320F28335 定时器 中断 IO中断 控制LED亮灭12-02
部分常用岩土经验值05-15
初中历史教学方法浅谈02-22
2016-2022年中国熏衣草油市场研究及投资前景预测报告08-27
经典有机人名反应04-02
新目标英语八年级下册Unit_10课件全04-24
剑桥雅思4 高清原版04-30
半命题作文:我终于读懂了______02-23
2016咨询工程师继续教育机械工业绿色制造技术 - 现代制造技术试卷答案10-17
困难职工申请书如何写最新4篇03-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 中断
- 定时器
- TMS320F28335
- 实验
- 控制
- DSP
- LED
- 贵州省信息网络技术练习版单选题答案
- matlab基础练习题及答案
- 全国大学生网络安全知识竞赛试题答案
- 五校联盟“庆元旦”文艺演出主持词 - (1)
- 清明节诗词(100首)
- 研究生英语精读教程(第三版-上)--参考答案及课文详解
- 西周法律制度
- 邯郸冀南新区产业发展总体规划纲要
- 幼儿园大班科学游戏教案《好玩的报纸》
- GSM数字移动通信系统是由欧洲主要电信运营者和制造厂家
- 于困境中看莫言《酒国》的人性反思
- 四年级上册三位数乘两位数教学设计
- 秸秆养畜项目建议书(可行性研究报告)
- 六年级科学下册 让身体热起来2教案 青岛版
- 3D打印在模具中的应用有哪些
- 空调冷热源方案大全
- 高岭土
- 上海师范大学《地理科学导论》考研真题
- 幼儿园大班周工作计划表 111
- 通风与空调工程施工质量验收规范