查看: 3204|回复: 1

【ATMEGA328P-XMINI】顺利实现串口通信

[复制链接]
  • TA的每日心情
    开心
    2017-7-4 13:51
  • 签到天数: 347 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-2-8 23:57:46 | 显示全部楼层 |阅读模式
    分享到:
    之前已经体验了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);                        }}
    进行配置
    顺利实现串口通信功能
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-1 13:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-9-2 19:53:52 | 显示全部楼层
    最近在学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 02:14 , Processed in 0.136588 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.