[ZLG-ARM] 请教关于2148的IO功能切换后,串口收发不正常!

[复制链接]
2264|3
 楼主| yxele 发表于 2008-5-15 17:36 | 显示全部楼层 |阅读模式
需求:<br />因为需要用到低功耗方式,把4*4键盘的列线分别接入到P0.7&nbsp;,&nbsp;P0.14&nbsp;,&nbsp;P0.20&nbsp;,&nbsp;P0.30上,正常工作时初始化GPIO,若系统没有任务时初始化为对应的外部中断EINT1&nbsp;,&nbsp;EINT2&nbsp;,&nbsp;EINT3,同时进入空闲状态,以降低系统功耗。<br /><br />问题:<br />系统还没有进入到空闲状态时(已注释),仅仅执行了GPIO2EInt函数后,可以唤醒2148且键盘初始化为GPIO能正常工作,但此时U0串口发送不出数据,接受有时也不正常。<br /><br />关键函数:<br /><br />main()<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Msg&nbsp;=&nbsp;GetMessage(EventPool);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Msg.hProc&nbsp;&gt&nbsp;(CALLBACK)0x000001EC)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysParam.Status&nbsp;&=&nbsp;(~SYS_STATUS_WAKE_UP)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Msg.hProc(Msg.Data);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysParam.TimeOut&nbsp;=&nbsp;0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(SysParam.TimeOut++&nbsp;&gt=&nbsp;SYSTEM_IDLE_TIME&nbsp;/&nbsp;40)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysParam.Status&nbsp;|=&nbsp;SYS_STATUS_WAKE_UP&nbsp;;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}while(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />=====================================================================<br /><br />void&nbsp;Sleep()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIO2EInt();<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((SysParam.Status&nbsp;&&nbsp;SYS_STATUS_WAKE_UP)&nbsp;==&nbsp;SYS_STATUS_WAKE_UP)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyLightOff()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCDLightOff()&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;POWER-&gtP_CON&nbsp;=&nbsp;0x01&nbsp;;&nbsp;//idle&nbsp;status&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysParam.TimeOut&nbsp;=&nbsp;0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyLightOn()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCDLightOn()&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Menu.Status&nbsp;=&nbsp;MENU_STATUS_STAND_BY&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ShowRdyStatu(NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />==================================================================<br /><br />void&nbsp;WakeUp()&nbsp;<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;POWER-&gtP_CON&nbsp;=&nbsp;0x00&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;|=&nbsp;(P0_0_TXD0&nbsp;&lt&lt&nbsp;P0_0_PINSEL)&nbsp;|&nbsp;(P0_1_RXD0&nbsp;&lt&lt&nbsp;P0_1_PINSEL);&nbsp;//设置I/O连接到UART0<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;0x08&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;0x04&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;0x02&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL1&nbsp;&=&nbsp;(P0_30_GPIO&nbsp;&lt&lt&nbsp;P0_30_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL1&nbsp;&=&nbsp;(P0_20_GPIO&nbsp;&lt&lt&nbsp;P0_20_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;&=&nbsp;(P0_7_GPIO&nbsp;&nbsp;&lt&lt&nbsp;P0_7_PINSEL)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;&=&nbsp;(P0_14_GPIO&nbsp;&lt&lt&nbsp;P0_14_PINSEL);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnClr&nbsp;|=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT1&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnClr&nbsp;|=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT2&nbsp;)&nbsp;;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnClr&nbsp;|=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT3&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_CON&nbsp;=&nbsp;1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_CFG&nbsp;=&nbsp;0x25&nbsp;;&nbsp;&nbsp;//&nbsp;M&nbsp;=&nbsp;6&nbsp;P&nbsp;=&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_FEED&nbsp;=&nbsp;0xAA&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_FEED&nbsp;=&nbsp;0x55&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(PLL-&gtPLL_STAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;10)&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_CON&nbsp;=&nbsp;3&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_FEED&nbsp;=&nbsp;0xaa&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLL-&gtPLL_FEED&nbsp;=&nbsp;0x55&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyBoardInit();<br />&nbsp;&nbsp;&nbsp;&nbsp;SysParam.Status&nbsp;&=&nbsp;(~SYS_STATUS_WAKE_UP)&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnable&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;VICIntSel_PWM0)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysParam.TimeOut&nbsp;=&nbsp;0&nbsp;;<br />}<br /><br />//-----------------------------------------------------------------------------------<br /><br />void&nbsp;WakeUpFromEInt1()&nbsp;__irq<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while((SYSCON-&gtEXT_INT&nbsp;&0x02)&nbsp;!=&nbsp;0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT1&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;WakeUp();<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddr&nbsp;=&nbsp;0x00&nbsp;;<br />}<br /><br />//-----------------------------------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />void&nbsp;WakeUpFromEInt2()&nbsp;__irq<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while((SYSCON-&gtEXT_INT&nbsp;&0x04)&nbsp;!=&nbsp;0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT2&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;WakeUp();<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddr&nbsp;=&nbsp;0x00&nbsp;;<br />}<br /><br />//-----------------------------------------------------------------------------------<br /><br />void&nbsp;WakeUpFromEInt3()&nbsp;__irq<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while((SYSCON-&gtEXT_INT&nbsp;&0x08)&nbsp;!=&nbsp;0)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT3&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;WakeUp();<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddr&nbsp;=&nbsp;0x00&nbsp;;<br />}<br />&nbsp;<br />//------------------------------------------------------------------------------------<br /><br />void&nbsp;GPIO2EInt(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;DisableIRQ();<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL1&nbsp;|=&nbsp;(P0_30_EINT3&nbsp;&lt&lt&nbsp;P0_30_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL1&nbsp;|=&nbsp;(P0_20_EINT3&nbsp;&lt&lt&nbsp;P0_20_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;|=&nbsp;(P0_7_EINT2&nbsp;&lt&lt&nbsp;P0_7_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;|=&nbsp;(P0_14_EINT1&nbsp;&lt&lt&nbsp;P0_14_PINSEL);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnClr&nbsp;|=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_PWM0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0-&gtIODIR&nbsp;|=&nbsp;(&nbsp;KEY_COL1&nbsp;)&nbsp;|&nbsp;(&nbsp;&nbsp;KEY_COL2&nbsp;)&nbsp;|&nbsp;(&nbsp;&nbsp;KEY_COL3&nbsp;)&nbsp;|&nbsp;&nbsp;(&nbsp;KEY_COL4&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0-&gtIOCLR&nbsp;|=&nbsp;(&nbsp;KEY_COL1&nbsp;)&nbsp;|&nbsp;(&nbsp;&nbsp;KEY_COL2&nbsp;)&nbsp;|&nbsp;(&nbsp;&nbsp;KEY_COL3&nbsp;)&nbsp;|&nbsp;&nbsp;(&nbsp;KEY_COL4&nbsp;)&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_MODE&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//interrupt&nbsp;is&nbsp;low&nbsp;volate&nbsp;triggle<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_POLAR&nbsp;=&nbsp;0x00&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtINT_WAKE&nbsp;=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EXTWAKE1&nbsp;)&nbsp;|&nbsp;&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EXTWAKE2&nbsp;)&nbsp;|&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EXTWAKE3&nbsp;)&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;SYSCON-&gtEXT_INT&nbsp;&nbsp;=&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT1&nbsp;)&nbsp;|&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT2)&nbsp;|&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;EINT3&nbsp;)&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectCntls[5]&nbsp;=&nbsp;VICIntSel_Enable&nbsp;|&nbsp;VICIntSel_EINT1&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddrs[5]&nbsp;=&nbsp;(unsigned&nbsp;int)WakeUpFromEInt1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectCntls[6]&nbsp;=&nbsp;VICIntSel_Enable&nbsp;|&nbsp;VICIntSel_EINT2&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddrs[6]&nbsp;=&nbsp;(unsigned&nbsp;int)WakeUpFromEInt2&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectCntls[7]&nbsp;=&nbsp;VICIntSel_Enable&nbsp;|&nbsp;VICIntSel_EINT3&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddrs[7]&nbsp;=&nbsp;(unsigned&nbsp;int)WakeUpFromEInt3&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnable&nbsp;|=&nbsp;&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT1&nbsp;)&nbsp;|&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT2&nbsp;)&nbsp;|&nbsp;(&nbsp;1&nbsp;&lt&lt&nbsp;VICIntSel_EINT3&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;EnableIRQ();<br />}<br /><br /><br />
zlgarm 发表于 2008-5-16 13:32 | 显示全部楼层

您好

楼主,您好:<br />&nbsp;&nbsp;&nbsp;&nbsp;您尝试只运行两个任务:串口0和IO管教切换,看看两个任务是否真的有影响。这两个外设在内部是独立的,基本上是在软件上出的问题。<br />by:lrk
zlgarm 发表于 2008-5-16 16:49 | 显示全部楼层

问题回复

&nbsp;yxele&nbsp;,您好:<br />&nbsp;&nbsp;&nbsp;&nbsp;您的串口没有初始化,请仔细检查。<br />on&nbsp;duty:&nbsp;zlgarm_LBH<br />&nbsp;<br />
 楼主| yxele 发表于 2008-5-16 21:20 | 显示全部楼层

re

有初始化函数,如下,只是没有列出!<br />另,我已经按李工所述的检查了PINSEL的配置,在IO功能配置切换的时候,UART0的引脚配置没有改变,还是TX0&nbsp;RX0<br /><br />#define&nbsp;DebugU0&nbsp;0<br />void&nbsp;Uart0Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;Fdiv;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart.TxCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart.RxCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart.TxdCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart.RxdCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uart.TxBusy&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL-&gtPIN_SEL0&nbsp;|=&nbsp;(P0_0_TXD0&nbsp;&lt&lt&nbsp;P0_0_PINSEL)&nbsp;|&nbsp;(P0_1_RXD0&nbsp;&lt&lt&nbsp;P0_1_PINSEL);&nbsp;//设置I/O连接到UART0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtLCR&nbsp;=&nbsp;0x83;//&nbsp;DLAB=1,允许设置波特率<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fdiv&nbsp;&nbsp;=&nbsp;(Fpclk&nbsp;/&nbsp;16)&nbsp;/&nbsp;UART0_BPS;//&nbsp;设置波特率38400<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtDLM&nbsp;=&nbsp;Fdiv&nbsp;/&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtDLL&nbsp;=&nbsp;Fdiv&nbsp;%&nbsp;256;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtLCR&nbsp;=&nbsp;0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtFCR&nbsp;=&nbsp;0xc7;//&nbsp;初始化FIFO&nbsp;接收14个字节就中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U0-&gtIER&nbsp;=&nbsp;0x07;//&nbsp;允许接收发送中断&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;DebugU0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectAddrs[1]&nbsp;=&nbsp;(unsigned&nbsp;int)IRQ_UART0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtVectCntls[1]&nbsp;=&nbsp;VICIntSel_Enable//使能IRQ中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;VICIntSel_UART0;//获取UART0的IRQ级别<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnable&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;VICIntSel_UART0);<br />&nbsp;&nbsp;&nbsp;&nbsp;#else<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntSelect&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;VICIntSel_UART0)&nbsp;;&nbsp;&nbsp;//&nbsp;UART0&nbsp;VIC&nbsp;Channel&nbsp;is&nbsp;6<br />&nbsp;&nbsp;&nbsp;&nbsp;VIC-&gtIntEnable&nbsp;|=&nbsp;(1&nbsp;&lt&lt&nbsp;VICIntSel_UART0)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;#endif<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部