完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 f28335 于 2019-12-24 19:47 编辑
求问怎么在源程序上加上按键控制LED闪烁时间 下面是源程序 #include "DSP2833x_Device.h" // DSP2833x 头文件 #include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件 //28335有88个GPIO,分为A、B、C三组,一组是32个GPIO,A组0~31,B组32~63,C组是64~87。对每一位进行操作。 #define LED1 GpioDataRegs.GPADAT.bit.GPIO0 //宏定义GPA组的GPIO0为LED1 #define LED2 GpioDataRegs.GPADAT.bit.GPIO1 //宏定义GPA组的GPIO1为LED2 #define LED3 GpioDataRegs.GPADAT.bit.GPIO2 //宏定义GPA组的GPIO2为LED3 #define LED4 GpioDataRegs.GPADAT.bit.GPIO3 //宏定义GPA组的GPIO3为LED4 #define LED5 GpioDataRegs.GPADAT.bit.GPIO4 //宏定义GPA组的GPIO4为LED5 interrupt void ISRtimer0(void); //声明定时器TIME0中断 void configtestled(void); //声明GPIO配置 void main(void) { // 步骤 1. 初始化系统控制: // 设置PLL, WatchDog, 使能外设时钟 // 下面这个函数可以从DSP2833x_SysCtrl.c文件中找到.. InitSysCtrl(); DINT; // 初始化PIE中断向量表,并使其指向中断服务子程序(ISR) // 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中 // 这个函数放在了DSP2833x_PieVect.c源文件里面. InitPieCtrl(); // 禁止CPU中断和清除所有CPU中断标志 IER = 0x0000; IFR = 0x0000; // PIE 向量表指针指向中断服务程(ISR)完成其初始化. // 即使在程序里不需要使用中断功能,也要对 PIE 向量表进行初始化. // 这样做是为了避免PIE引起的错误. InitPieVectTable(); //EALLOW,EDIS是成对使用的,有些寄存器是受到保护的,不能任意写, //EALLOW相当于去掉保护,对写保护的寄存器进行操作后 EDIS 是重新把这个寄存器保护起来的意思。 EALLOW; PieVectTable.TINT0 = &ISRTimer0; //将定时器中断添加都中断向量表里 EDIS; InitCpuTimers(); // 定时器初始化 //通过以下面程序就可以让定时器 0 每隔一段时间产生一次中断,这段时间的 //计算公式为: △T= Freq * Period /150000000(s);(其中 150000000 是 //CPU 的时钟频率,即 150MHz 的 时钟频率)针对此实验,Frep 为 150,Period 为 1000000,那么△T=1s。 ConfigCpuTimer(&CpuTimer0, 150, 500000); StartCpuTimer0(); //开启定时器 IER |= M_INT1; //使能第一组中断 PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //使能总中断 PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //使能第一组中断里的第七个中断--定时器中断 EINT; // 总中断 INTM 使能 ERTM; // 使能总实时中断 // 本例使用下面的GPIO配置 configtestled(); LED1=1; //初始化LED电平 DELAY_US(10); //延时 LED2=1; //初始化LED电平 DELAY_US(10); //延时 LED3=1; //初始化LED电平 DELAY_US(10); //延时 LED4=1; //初始化LED电平 DELAY_US(10); //延时 LED5=1; //初始化LED电平 DELAY_US(10); //延时 for(; ;); //For循环 } interrupt void ISRTimer0(void) { // Acknowledge this interrupt to receive more interrupts from group 1 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //0x0001赋给12组中断ACKnowledge寄存器,对其全部清除,不接受其他中断 CpuTimer0Regs.TCR.bit.TIF=1; // 定时到了指定时间,标志位置位,清除标志 CpuTimer0Regs.TCR.bit.TRB=1; // 重载Timer0的定时数据 LED1=~LED1; //取反 LED2=~LED2; //取反 LED3=~LED3; //取反 LED4=~LED4; //取反 LED5=~LED5; //取反 } void configtestled(void) { EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO复用为GPIO功能 GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPIO设置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO复用为GPIO功能 GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO设置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0; // GPIO复用为GPIO功能 GpioCtrlRegs.GPADIR.bit.GPIO2 = 1; // GPIO设置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0; // GPIO复用为GPIO功能 GpioCtrlRegs.GPADIR.bit.GPIO3 = 1; // GPIO设置为输出 GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0; // GPIO复用为GPIO功能 GpioCtrlRegs.GPADIR.bit.GPIO4 = 1; // GPIO设置为输出 EDIS; } //=========================================================================== // No more. //=========================================================================== |
|
相关推荐
1个回答
|
|
帮顶一下,坐等大神解答
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2426 浏览 0 评论
695 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2865 浏览 0 评论
3629 浏览 1 评论
1205 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 09:22 , Processed in 0.696073 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号