首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 嵌入式,综合应用实验报告,(1)

    时间:2020-10-31 11:34:47 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:嵌入式 实验 报告

     《 嵌入式系统与接口技术实验》 》 综合设计报告 班级

     13 物联网

      姓名

      黄梓恩

     学号

      13 0804 0106

      指导教师

      沈兰

     【 综合应用实验 目得】

     【 综合应用实验 题目】

     利用 GEC2410实验板,设计并实现一个综合应用系统 【 综合应用实验 要求】

     要用到已学过得所有 GEC2410模块,包括:

      GPIO 端口控制:LED 灯模块  中断控制:按键外部中断,内部中断(Timer or Tick time)  UART串口:键盘输入,显示器输出  PWM 定时器:定时中断,tout0 输出驱动蜂鸣器  蜂鸣器:

      实时时钟:当前时间,闹钟,节拍中断  瞧门狗定时器:WTD 中断,Reset 【相关理论知识】

     【 实现 方案】

     主函数

     # #in clu de ”2410add r、h" # #i nclu de ” 2410lib 、h " # #incl ude "def 、h” extern void wa tc hdo g_test (void ); extern

     void __irq watc hdog _int (v oid ); exter n v oi d __ir q Tic k_ Isr(void ); extern void

     O penRtc (v oi d); ex te rn voi d

     BUZZ ER _PWM_Te st(

     vo id ); ex te rn vo id

     E int_ Init (void); e ex tern vo id Ena bl e_Eint( void ); ext ern void

     watchdo g_test (voi d); exte rn char

     t ; in t Main (v oi d)

     {cﻩ ch ar

     a,b ,c; gnahCﻩ ange Cloc kDivid er (1 ,1) ;

      C hangeMPll Va lu e(0xa1,0x3,0x1 );

      Port_Init ();

      Uart_Se lect (0);

     U art_Init( 0,1152 00) ;

     Ei nt_In it ();/ / 外部中断初始化

     O penRtc( );// 打开实时时钟节拍中断

     watch dog _test( ); traUﻩ rt_ Printf(” **** ** ****H ELL O*** *** ** ** \n" );

      ﻩUﻩ Uart_P rintf( "1 、Pl ano wh it LED\ n"); ; ﻩtraUﻩ t_ Print f("2 、Pi ano2\n” ); ﻩbasiDﻩﻩ abl eIrq (BIT _WDT) ;

      DisableI rq(BI T_ EI NT0) ;

      D Di sableIrq(BIT_EINT2 ); Dﻩﻩ Dis able Ir q(BI T_E INT8 _23 );//这 关这 4 个中断, 为了在键盘没按'1 ’或’3’之这 前拒绝产生这 4 种中断

     traUﻩ t_Printf("\n1 、2 、3\n ");

     1//琴子电键按板发开是就2,琴子电盘键是就ﻩﻩ 就是键盘电子琴,2就是开发板按键电子琴 ,3跑马灯

      w while (1 )

     ﻩ {

      aU=aﻩﻩ ar t_ Getc h();Delay (300) ;

     ﻩﻩ i f(a =="1’ )

     ﻩ

     {

     ﻩ raUﻩ rt_Pr intf (" ES C b ack t o menu\n") ;

     ﻩ

     B UZZE R_PWM_Test ();

      }ﻩﻩ ﻩ i if(a= =’2 2" )

     {ﻩ {

     Uﻩ Uart_Prin tf("ESC b ack t o m en u\n” );

     ﻩ

     E Enabl e_Ei nt();

      ﻩ

     {

     cteG_traU=bﻩ ch ();Dela y( 300 );

     ﻩﻩ

      (fiﻩ (b ==ESC_KEY )b reak; ﻩ

     }ﻩ }

     } }

      ﻩ

     ﻩﻩ

     esleﻩﻩﻩftnirP_traUﻩ ntf(”Err ror !p lease

     t ry again") ; }ﻩ }

     } } #i nclude ”2410a addr 、h” #includ e "241 0l ib 、h " # #in cl ude ”d de f、h " / /使用K1按键触发 EIN T0,EINT0- 〉GP F0 / /使用 K 3按键触发 E INT 2,EINT2— —〉 〉G PF2 // 使用 K 5按键触发 EINT11 ,EINT11 ->G PG3 // 使用 K7 按键触发 E INT19 ,EINT 19- >GPG11 / //KSCAN0 ->GPE 11 i nt k=1 ; char t; c har *week[8]

     = {

     ” ","SU, N",” MON”, , ”TUE S”,

     "WED”, ,

     " THU RS ","F FR I”, , "SAT " } ; int yea r, mon th ,date ,weekd ay, hour, min,sec; v oi d __irq wa tchd og_int( vo id); v oid

     __irq Tic k_Isr (v oid ); void Ge t_R tc (void ); vo id Buz ze r_F re q_ Set( U32 f re q ); void Buz zer _Sto p( voi d ); v oid __irq Ein t0_IS R(void) ; v oid __irq Ein t2_ISR (void ); v vo id __irq

     Ein t11_ 19_ISR (vo id ); voi d w atchd og_ tes t(void )

     {

     / /in itialize inter ru pt re gis te rs 允许 Wa tch Dog 中断

      Cl earPen ding(BIT_WDT);

     // 往中断向量表填 W atc hD og 中断向量

      pIS R_WDT =(uns ign ed)wat chdo g_ int;

      //P Pr res cale r

     val ue= 100 、clo ck division f ac tor=1 28

     //t_wat chdog= 1/[PCL K/(P rescaler value+1) /Division_fac tor ]=0、00 0025856

      //dis ab le w atchdog

      r WTCON=((100 〈〈8)| (3 <<3 ));

     // 瞧门狗时钟周期 T=WTCNT *t_w atchdog=4S

      // 瞧门狗喂狗

      rWT DAT =1 5000;

      rWTCN T= 15 000 ;

      rWT CON |=((1 〈< 5)| (1<<2 ));//ena ble Wat chd og

     ti mer

     ang w atchdo og in te rrup t

      // 开中断

      En ab leIrq (BIT_W DT );

      } /****

     watchd og_i nt

      ** **/ voi d __ir q watchd og _int (void )

     { {

      / /清除中断

     r GP FDAT= rGPF DAT &~(1<< 7);Del ay (20 00);r GPF DAT=r GPFDAT| |( (1 〈<7 );

     r rG PF DAT=rGP FDAT&~ (1<<6);Delay(200)

     0); ;rGPFD AT=r GPFDAT |(1<〈6) ;

     rGPFDA T=rGPF DA T&~ (1< 〈5) ;Delay (2000 );rGP FD AT=r GP FD AT| (1<<5); FPGrﻩ FDAT=rGPF DA T&~ (1<< 4) ;D el ay(2000) ;rGPFDAT =rG PFDAT| (1 〈<4 4);

     } void __i rq Tick_Is r(vo id) { { k= -k; =k(fiﻩ ==1) Grﻩ GPFD AT=rG PFDAT& ~(1 5<<4 );

     if(k= =-1 )

     rGPFD AT =rGPFDA T| (1 5<<4); //_teGﻩ _Rtc (); //ﻩ /Uar t_ Prin tf(”R RTC TIME :

     %4x—%02x- %02x - % s

     — %02x:%02 2x x:%02x\n" ,year ,month ,d at e, we ek [weekday] ,hou r,m in ,se c);

     Cl earPendin g(BIT _TIC K); } void OpenRtc(void )

     {

      pISR_TICK =(uns igned )Tick_Isr ;

      r TIC NT=0x BF; ;// Tick time

     inter rupt

     en ab le;T ick time cou nt value= =63

     En ableIrq(BIT_TIC K) ;/ /op en RTC TI CK

     INTERRUPT } } void Get _Rtc( void )

     {

      rRTCCON = 0x01; //RTC 读写使能,选择 BCD , 时钟、计数器,无复位,1/32768 8

     i f (rBCD YEAR

     = = 0 x9 9)

     raeyﻩ year = 0 x1999 ;

      else

      2x0

     = raeyﻩ 0x200 0 + rB CDY EA R;

      m m onth= rBCDMON;

      date=rBCD DATE ;

     adkeewﻩ ay= rBCDD AY;

     DCBr=ruohﻩ CDHOUR;

     mi n= rBC DM IN;

     esﻩ ec =rBCDS EC ;

      r RTC CON = 0x 0;

      / //RTC 读写禁止, 选择 BCD 时钟、计数器,无复位 位,1/ 3276 8 } vo id

     BU ZZER_P WM_ Tes t(

     void ) { {

     / //U 16 freq

     ; //ﻩ /Uart_ Print f( "\n K EY

     C ONTR OL B UZZER\n " );

     //rP_traUﻩ rintf( "P re ss "ESC" key to E xit thi s program

     !\n\n”

     ) ;

      w hil e( 1

     )

     {

     8Uﻩ 8 k ey = Uart_Getch();/ /通过异步串行通道 U art 输入按键值

     ﻩ s switc h(key )

     {ﻩ {

     cas e ’1":B uzz er_Freq_Set( 200 ); ;rGPF DAT=rG PF DAT& ~(1〈<4 4) ;D elay (8 00 );rGPF DAT=rGP FDA T|( 1<<4);Buzze r_Sto p() ;br eak; ;

     ﻩﻩ case ’2 ':B uzzer_Fr eq _Se t( 30 0 );rG PFDAT=r GP FD AT&~(1 <<5)

     );Del lay (800 );rGPFDAT=rGPFDAT|( 1< <5) ;B uzzer_S top ();br eak ;

     case

     ’ 3':B uzzer _Fr eq_Set( 50 0 );r GPFDA T=r GP FDAT&~(1 <<6);Delay(800 );rGPFDAT=rGPFD AT |(1< 〈6)

     ); Buz zer _Sto p();break;

      cﻩ case

     "4’:Buzzer_Fre q_S et( 8 00 );rG PFDA T=rGPFDA T&~( 1〈〈7); ;D elay (80 0);r GPFD AT=rG PFDAT |(1< 〈7 );Buzzer_ St op();break; ;

     ﻩ acﻩ ase '5":Buzze r_Freq _Se t(1000 );r GPFDAT =rGP FDAT& ~(1<<4 );De el ay(800 );rG PF DAT =rGPFDAT |(1< 〈4 ); Buzz er_Sto p();br eak ;

     6’ esacﻩﻩ 6":B uz zer_Fr eq_Se t(12 00 );rG PF DA T=rGPFD AT &~ (1<<5); ;Dela y(800 );rGPFD AT=r GPF DAT |(1 <〈5);Bu zz er _Stop() ;br; eak; ﻩﻩ:’7’ esacﻩ :B uz zer _Fre q_Set (1400);r GPFD AT=rGPFDAT &~ (1<< 6);Del ay( (200 );rGP FD AT =rGPFD AT| (1 <〈6);Bu zzer_St op (); brea k;

     }ﻩﻩ /ﻩ //Buzze r_Freq_S et ( freq

     )

     ;

      / /U art_P rintf( ”\ tF re q = % d\n ", freq

     )

     ;/ /通过异步串行通道Ua rt 输出频率 (fiﻩﻩ (key==ESC_K EY)

      {ﻩ ﻩﻩ Bu zz er_S top ();// 停止蜂鸣器

      {//bﻩ {break; } //ﻩﻩﻩ /U art_Pr intf(”\nCh oice

     ag ain \n”)

     );

     erﻩﻩ eturn ;

     }ﻩ}ﻩ } } } voi d Bu zzer_Freq _Se t( U 32 freq )

     {

     rGPBCON = rG PB CO N & ~(3 <〈0 )|(1〈<1 );/ /s et GPB0

     as

     tout t0, pwm ou tp ut CTrﻩ rTCFG0

     = rTCFG0 & ~0xff |15 ; / /presc aler = 15

     rTCFG1

     = rTC FG1

     & ~0 xf |2 ;//divider = 1 /8

     r rTCN TB0 = (PCLK〉 〉>7)/f req; //rTCNTB0=PCLK/ {(p resc aler+1)

     )

     * d ivider * freq} 0BTNCTr = 0BPMCTrﻩ 0> >1 ; / /占空比50% //dﻩ disa ble deadzo ne, auto -re loa d,

     i nv -of f, up date TCNTB 0&TCM PB0, sta rt ti mer 0

     rT CON = rT CON & ~0x1f |(0 〈<4 )|(1< 〈3 )|(0<<2 )|(1 <〈1)

     )|(1 ); CTrﻩ TCO N & = ~(1<< 1); //cﻩﻩ clear

     ma nua l u pdate bit } } v vo id Buzz er_ Stop( voi d ) { { =|

     NOCBPGrﻩ |= 1 ;

     rGPBC ON =

     rGPBCON

     & ~ 3|1;

     ﻩ / /set

     GPB0

     a s ou tput &

     TADBPGrﻩ &= ~1;/ /out put 0 } / ***** **** **

     外部中断初始化

     *** ******** */ v oid E int_I nit (void) {

      // 设置GPE11 为输出 0 PGrﻩ PECON

     = (rGPECO N|(3 〈<22 )) & ~(2<<2 2); rﻩ rGPEU P

     |= (1< <11); Grﻩ GP EDAT &= ~(1<< 11) ;

     rGP FCON = rG PFCO N &

     ~ (3)|( 1<〈1) ;

      //GPF0 设置为EINT0

     rGP FCO N = rGPFCO N

     &

     ~(3< 〈4) |(1<<5; );/

      ﻩ //GPF2 设置为EINT2 ﻩ

     rG PG CON =

     r GP GC ON & ~(3 <〈6)| (1 〈〈7; );/

      ﻩ //G PG3 设置为EI IN T11

     rG PG CON =

     rGP GCON & ~(3 〈<22 )|(1<<23); //GPG 11 设置为 为 EIN T1 9

      rGPF UP|= (1< <0);

      //disa bl e GP F0

     pul l up

     rGPF UP|= (1< <2);

     // dis ab le GPF2 p ul l up

      r GPGUP |=(1〈<3 );

      //disable G PG3 pul l up

     rGPGUP |= (1 〈<1 1);

     //d is ab le GPG11 pull u p rﻩ rEX TI NT0 = (rEXTIN T0 & ~(7〈<0 ))|( 2〈〈0);

      // EIN T0 -〉fall ing g

     ed ge trigge red TXErﻩ TIN T0 = (rEXTINT 0 & ~ (7)

     <<8)) |(2<<8);

     / /EIN T2 〉 -〉falling edge

     t tr ig gered XErﻩ XTINT1 =

     (r EXTINT1

     &

     ~( 7<<12) )|(0 x2<<12);

     //EIN T11— —〉 〉fa lling g

     ed ge trigg ered

     r rE XTINT2 = (rEXTIN T2 & ~(7 <<12 ))|(0x2<<12);

     //E IN T19- ->fallin g

     e dg e trig gered

      pISR _EI NT0 =

     (uns ign ed)Eint0 _ISR ;

      pI SR_EIN T2

     = (uns ig ned )Ei nt 2_ISR;

     pISR_EIN T8_2 3 =

     ( unsigned )Ein t1 1_19_ IS R; } } /* ***** *****

      开外部中断

     ** ***** *****/ void Enab le_Eint(voi d) { {

     rEINT PEND = 0 xf fffff ; / /to clear

     t he previous

     pendin g sta tes

     rSRC PND |=

     BIT _EINT 0|B IT_EINT2 |BIT _EINT 8_23;

     r INTP ND |= BIT_E INT 0|B IT_EIN T2|BIT_EI NT 8_23 ;

     rEIN TMA SK= ~( (1 〈<11 )|(1 〈<19)

     )

     );

     //rI NTM SK= ~( BIT_E INT0|BI T_ EINT2 |BIT _E IN T8 _23 );

      EnableIrq(BIT_EINT0 );

     Ena bleI rq (BIT_EINT2 );

     Enabl eIrq(BIT_EIN T8_ 23) ; } /* *** *** *** *

      外部中断服务程序

     * ****** *****/ vo id __irq E int0_ISR(v oid )

     {

     Cle ar Pending(BI T_ EI NT0 );

     Buzz er _F re q_Set( 300 )

     ;// 修改PMW 频率

      D ela y(800);Bu zzer_Stop() ; raUﻩ art_Printf("F req =300\n ")

     ;//通过异步串行通道Uart 输出频率 } voi d __irq Eint2 _ISR (void) { { ﻩ

     Clea rPendi ng (BIT_EI NT2) ;

     Buzze r_Fr eq_Se t(

     500 )

     ;// 修改 PMW 频率

     De lay( 800) ;Buzzer_Stop( );

     U Uart_Pr intf( ”Freq=500\ n” )

     ;/ /通过异步串行通道 Ua rt输出频率 } v oid _ _irq Ein t11 _19_ISR (v oid) { {

     if(rE INTPEND

     & (1<<1 1))

     { {

      Buzzer_Fre q_ Set (

     8 00 ) ;// 修改 PMW 频率

     De la y(800 );Buzzer _Sto p();

     raUﻩ Uart _Pri ntf ("Fre q=8 00 \n"

     )

     ;// 通过异步串行通道 Uar t输出频率

     rﻩ rEINTPEND=( 1<<11 );// 清除子登记,方便下次中断, 方法比较特别,在对应为

     写 写 1 将它清为 0

     ClearPen din g(BIT_EINT8_ 23);

     }

      el se

     if (rEINT PEND & (1< 〈19 ))

      {

      Buzz er_Fre q_Set( 100 0 )

     ;/ /修改PM W频率

      eDﻩ elay(8 00 ); Buz zer_ Stop( );

     ﻩ Uart _Prin tf( "Freq= 1000 \n” ”

     )

     )

     ;/ /通过异步串行通道 U ar t输出频率

     IErﻩ INTPEND=(1 <<19 );

     ClearP ending(BIT _EIN T8_23 );

     }

      el se

      {

      aUﻩ art_Print f(" oth ers EN Ts are occ ur red\n" );

     PTNIErﻩ PEND=0xffffff;

      Cl earP en di ng( BIT _E INT8 _23);

      } } } 【】果结及程过现实ﻬ 【实现过程及结果】

     择 开始菜单,选择 1, 为键盘电子琴,不同按键会有不同得灯亮起

     按 按 E SC 键返回选择菜单,若按了错误按键, 系统提示错误, 择 选择 2 为开发板按键电子琴, 会显示您所按按键得频率

      【设计总结】

     【参考文献】

     1 、 2 、 3 、

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识