帮忙看下串口驱动

[复制链接]
 楼主| cheungssan 发表于 2009-1-5 16:50 | 显示全部楼层 |阅读模式
我用的是at91sam7x256芯片,怎么调串口也调不通,不知道哪里出问题了。不过要是把以前我写的一个可以正常运行的程序(包括串口驱动)下载到板子上以后就可以正常运行了,如果把板子清空,就又不能运行了,可能是初始化时错了,但又找不出来,大家帮帮啊,谢谢了啊。<br />源代码如下:<br /><br />#include&nbsp;&quot;/include/at91sam7S64/at91sam7s64.h&quot;<br />#include&nbsp;&quot;/include/at91sam7s64/lib_at91sam7s64.h&quot;<br /><br /><br />void&nbsp;AT91F_LowLevelInit(void);<br />void&nbsp;usart0_init(void);<br />void&nbsp;usart0_write(char&nbsp;*&nbsp;tx_buffer,&nbsp;unsigned&nbsp;int&nbsp;tx_counter);<br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;MCLK&nbsp;&nbsp;&nbsp;&nbsp;48000000<br />#define&nbsp;&nbsp;&nbsp;&nbsp;BAUD&nbsp;&nbsp;&nbsp;&nbsp;19200<br /><br /><br />int&nbsp;CMain(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;index&nbsp;=&nbsp;500000;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_LowLevelInit();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;usart0_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usart0_write(&quot;Hello,&nbsp;World!
&quot;,&nbsp;14);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(index--);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;500000;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br /><br />void&nbsp;AT91F_LowLevelInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//Disables&nbsp;the&nbsp;Watchdog&nbsp;Timer<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_WDTC-&gtWDTC_WDMR&nbsp;=&nbsp;AT91C_WDTC_WDDIS;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Enabling&nbsp;the&nbsp;Main&nbsp;Oscillator<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PMC-&gtPMC_MOR&nbsp;=&nbsp;0x01&nbsp;|&nbsp;0x07&nbsp;&lt&lt&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(AT91C_BASE_PMC-&gtPMC_SR&nbsp;&&nbsp;AT91C_PMC_MOSCS))<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Setting&nbsp;PLL&nbsp;and&nbsp;divider<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PMC-&gtPMC_PLLR&nbsp;=&nbsp;24&nbsp;|&nbsp;(0x28&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;(124&nbsp;&lt&lt&nbsp;16)&nbsp;|&nbsp;AT91C_CKGR_USBDIV_1;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(AT91C_BASE_PMC-&gtPMC_SR&nbsp;&&nbsp;AT91C_PMC_LOCK));<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(AT91C_BASE_PMC-&gtPMC_SR&nbsp;&&nbsp;AT91C_PMC_MCKRDY));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Selection&nbsp;of&nbsp;Processor&nbsp;Clock<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PMC-&gtPMC_MCKR&nbsp;=&nbsp;AT91C_PMC_PRES_CLK_2;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(AT91C_BASE_PMC-&gtPMC_SR&nbsp;&&nbsp;AT91C_PMC_MCKRDY));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Selection&nbsp;of&nbsp;Master&nbsp;Clock&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PMC-&gtPMC_MCKR&nbsp;|=&nbsp;AT91C_PMC_CSS_PLL_CLK;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(AT91C_BASE_PMC-&gtPMC_SR&nbsp;&&nbsp;AT91C_PMC_MCKRDY));<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />void&nbsp;usart0_init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_US0_CfgPMC();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_US0_CfgPIO();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_US_Configure(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_US0,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MCLK,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91C_US_ASYNC_MODE,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BAUD,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_US0-&gtUS_CR&nbsp;=&nbsp;AT91C_US_RXEN&nbsp;|&nbsp;AT91C_US_TXEN&nbsp;|&nbsp;AT91C_US_STTTO;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />void&nbsp;usart0_write(char&nbsp;*&nbsp;tx_buffer,&nbsp;unsigned&nbsp;int&nbsp;tx_counter)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PDC_US0-&gtPDC_TPR&nbsp;=&nbsp;(unsigned&nbsp;int)tx_buffer;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91C_BASE_PDC_US0-&gtPDC_TCR&nbsp;=&nbsp;tx_counter;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91F_PDC_EnableTx&nbsp;(AT91C_BASE_PDC_US0);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//while&nbsp;(AT91C_BASE_PDC_US0-&gtPDC_TCR&nbsp;&&nbsp;0xFFFF);<br />}<br /><br />
dz0412115 发表于 2009-1-8 21:48 | 显示全部楼层

nikanka

#include&nbsp;&quot;/include/at91sam7S64/at91sam7s64.h&quot;<br />#include&nbsp;&quot;/include/at91sam7s64/lib_at91sam7s64.h你下看看那。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

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