还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《嵌入式系统与接口技术实验》综合设计报告班级13物联网姓名黄梓恩学号指导教师沈兰位,1/32768}voidBUZZER_PWM_Testvoid//U16freq;//Uart_Printf*\nKEYCONTROLBUZZER\nM;/ZUart_PrintfPressESC*keytoExitthisprogram!\n\nM;whi1e1«U8key=Uart_Getch;〃通过异步串行通道Uart输入按键值®»switchkeyOddgcase*11Buzzer_Freq_Set200;rGPFDAT=rGPFDAT-14;De1ay800;rGPFDAT=rGPFDAT|1«4;Buzzer_Stop;break;case2:Buzzer_Freq_Set300;rGPFDAT=rGPFDAT〜l«5;De1ay800;rGPFDAT=rGPFDAT|1«5;Buzzer_Stop;break;gcase3*:Buzzer_Freq_Set500;rGPFDAT=rGPFDAT-l«6;Delay800;rGPFDAT=rGPFDATI1«6;Buzzer_Stop;break;ocase4z:Buzzer_Freq_Set800;rGPFDAT=rGPFDAT41«7;Delay800;rGPFDAT=rGPFDAT|17;Buzzer_Stop;break;皿case*5:Buzzer_Freq_Set100;rGPFDAT=rGPFDAT〜1«4;DeIay800;rGPFDAT=rGPFDAT|14;Buzzer_Stop;break;gcase^iBuzzer_Freq_Set1200;rGPFDAT=rGPFDAT-1«5;Delay800;rGPFDAT=rGPFDAT|15;Buzzer_Stop;break;case7Buzzer_Freq_Set1400;rGPFDAT=rGPFDAT-1«6;De1ay200;rGPFDAT=rGPFD\T|1«6;Buzzer_Stop;break;°}//Buzzer_Freq_Setfreq;//Uart.PrintfMFreq=%d\nMfreq;//通过异步串行通道Uart输出频率«ifkey==ESC_KEYo{Buzzer_Stop;//停止蜂鸣器4//{break;}V/Uart_PrintfM\nChoiceagain\n”;®®return;}voidBuzzer_Freq_SetU32freqrGPBCON=rGPBCON^30|l1;//setGPB0astout0pwmoutputrTCFG0=rTCFGO〜0xff|15;//presealer=15rTCFG1=rTCFGI〜OxfI2;//dividerorTCNTBO=PCLK»7/freq;//rTCNTB0=PCLK/{presealer+1*divider*freq}rTCMPBO=rTCNTB01;〃占空比50%d//disabledeadzoneauto-reloadinv-offupdateTCNTB0TCMPBOstarttimer0®rTCON=rTCON-0xlf|0«4|1«3I0«2I11|1;rTCON=~1«1;//clearmanua1updatebitvoidBuzzer_StopvoidrGPBCON1=1;»rGPBCON=rGPBCON-3|l;/setGPBOasoutputrGPBDAT=〜1;//output0/***********外部中断初始化************/voidEint_Initvoid〃设立GPE11为输出0rGPECON=rGPECON|3«22〜2vv22;”GPEUP|=1«H;®rGPEDAT=〜Ivvll;rGPFCON=rGPFCON〜3|IvVl;//GPFO设立为EINTOrGPFCON=rGPFCON3«4|1«5;®〃GPF2设立为EINT2rGPGCON=rGPGCON-3«6|1«7泸//GPG3设立为EINT1rGPGCON=rGPGCON-3«22|1«23;//GPGU设立为EINT19rGPFUP|=l«0;//disableGPFOpulluprGPFUP|=1«2;//disab1eGPF2pul1uprGPGUP|=l«3;//disableGPG3pu11uparGPGUP|=111;//disab1eGPG11pulluprEXTINTO=rEXTINTO〜7«0|2«0;//EINTO-fa11ingedgetriggered^rEXTINTO=rEXTINTO78|2«8;//EINT2-fa11ingedgetriggeredrEXTlNT1=rEXTINTI-7«12|0x212;//EINTU-fallingedgetriggereddrEXTINT2=rEXTINT2-7«12|0x2«12;//EINT19-fal1ingedgetriggered9pISR_EINTO=unsignedEintO_ISR;pISR_EINT2=unsignedEint2」SR;plSR_EINT8_23=unsignedEintll_19_ISR;voidEnable_Eintvoid{rElNTPEND=Oxffffff;//toclearthepreviouspendingstatesrSRCPND|=BIT_EINTO|BIT_EINT2|BIT_EINT8_23;rlNTPND|=BIT_EINTO|BIT_EINT2|BIT_EINT8_23;rEINTMASK=~1«11|1«19;//rINTMSK=-BIT_EINTO|BIT_EINT2|BIT_EINT8_23;EnableIrqBIT.EINTO;EnableIrqBIT.EINT2;EnablelrqBIT_EINT8_23;/***********外部中断服务程序************/voidirqEintO_ISRvoid卜ClearPendingBIT_EINTO;Buzzer_Freq_Set300;//修改PMW频率De1ay800;Buzzer_Stop;»Uart_PrintfMFreq=300\n;通过异步串行通道Uart输出频率void_irqEint2_ISRvoidClearPendingBIT_EINT2;Buzzer_Freq_Set500;//修改PMVV频率De1ay800;Buzzer_Stop;Uart_PrintfFreq=500\nn;〃通过异步串行通道Uart输出频率}void—irqEint11_19_ISRvoidifrElNTPEND1«11Buzzer_Freq_Set800;〃修改PMW频率dDelay800;Buzzer_Stop;«Uart_PrintfFreq=800\nM;〃通过异步串行通道Uart输出频率rEINTPEND=lvvll;〃清除子登记,方便下次中断方法比较特别,在相应为写1将它清为0ClearPendingBIT_EINT8_23;}elseifrEINTPEND119{Buzzer_Freq_Set1000;//修改PMW频率Delay800;Buzzer_Stop;oUart_PrintfFreq=1000\iT;〃通过异步串行通道Uart输出频率,rEINTPEND=119;ClearPendingBIT_EINT8_23;e1seUart_PrintfothersENTsareoccrEINTPEND=0xfHTff;ClearPendingBIT_EINT8_23;【实现过程及结果】开始菜单,选择1为键盘电子琴,不同按键会有不同的灯亮起NowdownloadFilefromuartODownloadFileSize=20350Areyousuretorun[y/n]deuice_id0x52=0xbFdeuice_uersionOxFx=0xbFthereisnoW83977deuice!**********hello**********
1.PlanowhitLED
2.Piano
21.
2.3ESCbacktonenu按ESC键返回选择菜单,若按了错误按键,系统提醒错误选择2为开发板按键电子琴,会显示你所按按键的频率Liiere工、nuv/coy//ueuxuei«»««»««**«HELLO**********
1.PlanowhitLED
2.Piano
21.
2.3ESCbacktonenuErrorpleasetryagainESCbacktomenuESCbacktomenuESCbacktonenuESCbacktonenuFreq=300Freq-3fl0Freq=8O0Freq=800Freq-1000Freq=1O00Freq=1000Freq»1000Freq=1000Freq=1080Freq=1000Freq-1000【设计总结】【参考文献】
1、
2、
3、【综合应用实验目的】【综合应用实验题目】运用GEC2410实验板,设计并实现一个综合应用系统【综合应用实验规定】要用到己学过的所有GEC2410模块,涉及GPIO端口控制:LED灯模块中断控制:按键外部中断,内部中断TimerorTicktimeUART串口:键盘输入,显示器输出PWM定期器:定期中断tout输出驱动蜂鸣器•蜂鸣器•实时时钟当前时间闹钟,节拍中断•看门狗定期器:WTD中断Reset【相关理论知识】【实现方案】主函数#include2410addr.hM#inc1udeM24101ib.h#includedef.hexternvoidwatchdog_testvoid;externvoid_irqwatchdog_intvoid;externvoid_irqTick_Isrvoid;externvoidOpenRtcvoid;externvoidBUZZER_PWM_Testvoid;externvoidEint_Initvoid;externvoidEnab1e_Eintvoid;externvoidwatchdog_testvoid;externcharintMainvoid{charabc;ChangeC1ockDivider11;ChangeMPIIVa1ue0xa10x3Ox1;Port_Init;Uart_SelectO;Uart_Init0115200;Eint_Init;//外部中断初始化OpenRtc;打开实时时钟节拍中断watchdog_test;Uart_Printf”**********HELLO**********\n;Uart.PrintfMl.PlanowhitLED\n;Uart_Printf2Piano2\nM;Disab1elrqBIT_WDT;DisableIrqBIT_EINT0;isab1elrqBIT_EINT2;Disab1elrqBIT_EINT8_23;〃关这4个中断,为了在键盘没按T或3之前拒绝产生这4种中断»Uart_PrintfM\nl.
2.3\nw;〃1是键盘电子琴2是开发板按键电子琴,3跑马灯6»whilela=Uart_Getch;Delay300;gifa==r®Vart_Printf*ESCbacktomenu\iiM;o^BUZZER_PWM_Test;°}0aifa==2,®®Uart_PrintfESCbacktomenu\nM;gEnabIe_Eint;9b=Uart_Getch;Delay300;®ifb==ESC_KEVbreakOddo0®e1seUart_PrintfuError!pleasetryagainu;#inc1ude”2410addr.h•#inc1ude2410lib.h”#include•def.h〃使用KI按键触发EINTOEINT0-GPFO〃使用K3按键触发EINT2EINT2-GPF2//使用K5按键触发EINT11EINT11-GPG3//使用K7按键触发EINT19EINT19-GPG11//KSCANO-GPE11intk=l;chart;char*week
[8]={“SUN“JMON“,“TUES,WED,THURS”JFRI“,“SAT”};intyeai;nionthdateweekdayhourminsec;voidirqwatchdog_intvoid;voidirqTick_Isrvoid;voidGet_Rtcvoid;voidBuzzer_Freq_SetU32freq;voidBuzzer_St0pvoid;void_irqEint0_ISRvoid;voidirqEint2_ISRvoid;void_irqEintll_19_ISRvoid;voidwatchdog_testvoid//initializeinterruptregisters允许WatchDog中断C1earPendingBIT_VVDT;//往中断向量表填WatchDog中断向量pISR_VVDT=unsignedwatchdog_int;//Presealervalue=100clockdivisionfactor=128//t_watchdog=l/[PCLK/PrescalervaIue+1/Division_factorj=
0.00025856//disab1ewatchdogrWTCON=l00«8|3«3;//看门狗时钟周期T=WTCNT*t_watchdog=4S〃看门狗喂狗rWTDAT=15000;rVVTCNT=15000;rVVTCON|=1«5|12;//enableWatchdogtimerangwatchdoginterrupt〃开中断Enab1eIrqBIT_WDT;/****watchdog_int****/void_irqwatchdog_intvoid{〃清除中断®rGPFDAT=rGPFDAT-l«7;De1ay2023;rGPFDAT=rGPFDAT|1«7;rGPFDAT=rGPFDAT-16;Delay2023;rGPFDAT=rGPFDATI1«6;»GPFDAT=rGPFDATl«5;Delay2023;rGPFDAT=rGPFDAT|1«5;rGPFDAT=rGPFDAT-1«4;Delay2023;rGPFDAT=rGPFDATI1«4;void_irqTick_Isrvoi1{k=-k;ifk==1arGPFDAT=rGPFDAT-15«4;ifk==-1GPFDAT=rGPFDAT|15«4;//Get_Rtc;q//Uart.PrintfCRTCTIME:%4x-%02x-%02x-%s-%02x:%02x%02x\n”yearnionthdateweek[weekday]hourniinsec;ClearPendingBIT_TICK;voidOpenRtcvoidpISR_TICK=unsignedTick_Isr;rTICNT=OxBF;//Ticktimeinterruptenab1e;Ticktimecountvalue=63Enab1eIrqBIT_TICK;//openRTCTICKINTERRUPT}voidGet_RtcvoidrRTCCON=0x01;//RTC读写使能,选择BCD时钟、计数器,无复位,1/32768ifrBCDYEAR==0x99year=0x1999;»elseyear=Ox2023+rBCDYEAR;0month=rBCDMON;®date=rBCDDATE;weekday=rBCDDAY;hour=rBCDHOUR;min=rBCDMIN;sec=rBCDSEC;。