TA的每日心情 | 开心 2017-7-4 13:51 |
---|
签到天数: 347 天 连续签到: 1 天 [LV.8]以坛为家I
|
之前已经体验了GPIO功能,现在来试试串口通信。
首先,同样的,先建立一个工程
选型
为快速实现功能,先用asf的方式
选择asf中要用的模块
这边可以很明显的看到,确实没有现成的串口文件可调用
但为了方便使用,此处还是选择了GPIO的通用的文件,进入工程
那串口通信如何实现呢,
首先初始化,这块的话,芯片手册中已经直接给出,
那就直接用用看吧
如图,有个警告,解决方式是加修饰符static
这样就没问题了。
USRAT数据的5~8数据位发送如图:
USART数据的5~8数据位接收如图:
完善程序
#define FOSC 1843200#define BAUD 9600#define MYUBRR FOSC/16/BAUD-1static void USART_Init( unsigned int ubrr){ /*Set baud rate */ UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; /*Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ00);}static void USART_Transmit( unsigned char data ){ /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ) ; /* Put data into buffer, sends the data */ UDR0 = data;}static void PutStr(char *s){ while(*s)USART_Transmit(*s++);}int main (void){ char buf[10]={1,2,3,4,5,6,7,8,9}; uint8_t i=0; board_init(); USART_Init(MYUBRR); delay_init(FOSC); while(1) { PutStr(buf); delay_ms(2000); }}
进行配置
顺利实现串口通信功能 |
|