用的是S3C2410,终端上出来的是乱码。串口应该能直接发字符,不需要什么转换吧!波特率应该不会有问题吧,我是直接套公式的!<br />串口通信方式为:波特率为115200,无奇偶校验,1位停止位,8位数据位<br /><br />程序代码如下:<br />#include <stdlib.h><br />#include <string.h><br />#include <stdarg.h><br />#include <ctype.h><br />#include "2410addr.h"<br /><br />#define pclk 12000000<br /><br />void Uart_Init( int baud)<br />{ int i; <br /> <br /> // I/O口设置 (GPH5,GPH4) UART1的(RXD1,TXD1)<br /> rGPHUP =0x00;// The pull up function is enable<br /> rGPHCON = (rGPHCON & (~0x00000F00)) | (0x00000A00);<br /> //GPH5为RXD1、GPH4为TXD1<br /> <br /> rUFCON1 = 0x0;//UART channel 1 FIFO control register, FIFO disable<br /> rUMCON1 = 0x0;//UART chaneel 1 MODEM control register, AFC disable<br /> <br /> rULCON1 = 0x03;// 禁止IRDA,无奇偶校验,1位停止位,8位数据位<br /> rUCON1 = 0x245;// 使用PCLK来生成波特率,发送中断为电平触发模 式,接收中断为边沿触发模式,<br />// 禁止接收超时中断,使能接收错误中断,正常工作模式,中断或查询方式<br />(非DMA)<br /> <br /> //串口波特率设置<br /> rUBRDIV1=( (int)(pclk/baud/16.0) -1 );// 未用PLL,则pclk=12M<br /> for(i=0;i<100;i++);<br />}<br /><br /><br />//向串口发送字节数据,并等待发送完毕。输入为data是要发送的数据<br />// 对于'\n'字符,发送时会加入'\r'字符<br />void UARTPutch( int data)<br />{ int i;<br /> <br /> <br /> if(data=='\n')<br /> {<br /> while(!(rUTRSTAT1 & 0x2));// 等待发送器为空<br /> for(i=0;i<10;i++); <br /> //because the slow response of hyper_terminal <br /> rUTXH1 = '\r';<br /> }<br /> while(!(rUTRSTAT1 & 0x2)); //Wait until THR Buffer is empty<br /> for(i=0;i<10;i++);<br /> rUTXH1=data; <br />}<br /> <br /><br />//向串口发送一字符串,*str为要发送的字符串的指针<br />void UARTPuts (char const *str) <br />{<br /> while(*str !='\0')<br /> UARTPutch(*str++);<br />}<br /><br />int Main(void) <br />{ <br /> int i;<br /> Uart_Init(115200); // 初始化UART1<br /> while(1)<br />{ <br /><br /> for(i=0; i<10; i++)<br /> {<br /> UARTPuts("Hello World!\n");<br /> }<br /> <br />}<br />return(0);<br />}<br /> |
|