項目需要同時使用UART0,和TIME0,TIME2。UART0已經(jīng)使用了TIME1自動重載定時器。在單獨使用UART0的示例代碼的時候是可以的,但是加上TIME0后,發(fā)現(xiàn)UART0就失效了。
#include?".\Public\CH554.H" #include?".\Public\Debug.H" #include?".\Public\Timer.H" #include?"stdio.h" #include? #pragma??NOAREGS ? UINT8?dat?=?2; UINT8?flag?=?0; ? ? void?UART0Interrupt(?void?)?interrupt?INT_NO_UART0 { ????if(RI) ????{ ????????dat?=?SBUF; ????????CH554UART0SendByte(dat); ????????RI?=?0; ????????flag?=?1; ????} } void?initTime(?void?) {? ? ???mTimer0Clk12DivFsys(); ???????????????????????????????????????????????????//T0定時器時鐘設置 ????mTimer_x_ModInit(0,2);?????????????????????????????????????????????????????//T0?定時器模式設置 ????mTimer_x_SetData(0,0x5555); ???????????????????????????????????????????????//T0定時器賦值 ????mTimer0RunCTL(1);??????????????????????????????????????????????????????????//T0定時器啟動 ????ET0?=?1;???????????????????????????????????????????????????????????????????//T0定時器中斷開啟 ????EA?=?1; ? } void?main(?) { ????CfgFsys(?);????????????????????????????????????????????????????????????????//CH554時鐘選擇配置 ????mDelaymS(20); ????mInitSTDIO(?); ???initTime(); ????while(1) ????{? ????????if(flag) ????????{ ? ????????????flag?=?0; ????????} ????????mDelaymS(100); ????????? ????} }
void mInitSTDIO(?) { ????UINT32?x; ????UINT8?x2;? ????SM0?=?0; ????SM1?=?1; ????SM2?=?0;???????????????????????????????????????????????????????????????????//串口0使用模式1 ???????????????????????????????????????????????????????????????????????????????//使用Timer1作為波特率發(fā)生器 ????RCLK?=?0;??????????????????????????????????????????????????????????????????//UART0接收時鐘 ????TCLK?=?0;??????????????????????????????????????????????????????????????????//UART0發(fā)送時鐘 ????PCON?|=?SMOD; ????x?=?10?*?FREQ_SYS?/?UART0_BUAD?/?16;???????????????????????????????????????//如果更改主頻,注意x的值不要溢出???????????????????????????? ????x2?=?x?%?10; ????x?/=?10; ????if?(?x2?>=?5?)?x?++;???????????????????????????????????????????????????????//四舍五入 ????TMOD?=?TMOD?&?~?bT1_GATE?&?~?bT1_CT?&?~?MASK_T1_MOD?|?bT1_M1;??????????????//0X20,Timer1作為8位自動重載定時器 ????T2MOD?=?T2MOD?|?bTMR_CLK?|?bT1_CLK;????????????????????????????????????????//Timer1時鐘選擇 ????TH1?=?0-x;?????????????????????????????????????????????????????????????????//12MHz晶振,buad/12為實際需設置波特率 ????TR1?=?1;???????????????????????????????????????????????????????????????????//啟動定時器1 ????//TI?=?1; ????REN?=?1;???????????????????????????????????????????????????????????????????//串口0接收使能 ?EA=1;//全局中斷使能控制位,該位為?1?并且?E_DIS?為?0?則允許中斷;該位為?0?屏蔽所有中斷請求 ES=1;?//異步串口?0?中斷使能位,該位為?1?允許?UART0?中斷;為?0?屏蔽 ? }
請問我能不能同時使用uart0 和 time0 time2,為什么UART同時使用時會失效?
熱門產(chǎn)品 :
CH397: 高集成度、低功耗USB網(wǎng)卡芯片