打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】+ 串口发送

[复制链接]
648|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天捣鼓了一下串口发送。
原理图:

可以看到发送腿是RC0。
代码:
#include "eusart1.h"

volatile eusart1_status_t eusart1RxLastError;

void (*EUSART1_FramingErrorHandler)(void);
void (*EUSART1_OverrunErrorHandler)(void);
void (*EUSART1_ErrorHandler)(void);

void EUSART1_DefaultFramingErrorHandler(void);
void EUSART1_DefaultOverrunErrorHandler(void);
void EUSART1_DefaultErrorHandler(void);

void EUSART1_Initialize(void)
{        
    BAUD1CON = 0x08;                                                            // ABDOVF no_overflow; SCKP Non-Inverted; BRG16 16bit_generator; WUE disabled; ABDEN disabled;
    RC1STA = 0x80;                                                              // SPEN enabled; RX9 8-bit; CREN disabled; ADDEN disabled; SREN disabled;
    TX1STA = 0x24;                                                              // TX9 8-bit; TX9D 0; SENDB sync_break_complete; TXEN enabled; SYNC asynchronous; BRGH hi_speed; CSRC slave;
    SP1BRGL = 0x19;                                                             // BRG = 0x19 = 9600 [url=home.php?mod=space&uid=72445]@[/url] 1 MHz FOSC
    SP1BRGH = 0x00;

    EUSART1_SetFramingErrorHandler(EUSART1_DefaultFramingErrorHandler);
    EUSART1_SetOverrunErrorHandler(EUSART1_DefaultOverrunErrorHandler);
    EUSART1_SetErrorHandler(EUSART1_DefaultErrorHandler);

    eusart1RxLastError.status = 0;
}

void EUSART1_Write(uint8_t txData)
{
    while(0 == PIR1bits.TX1IF)
    {
    }

    TX1REG = txData;                                                            // Write the data byte to the USART.
}

void putch(char txData)
{
    EUSART1_Write(txData);
}

void EUSART1_DefaultFramingErrorHandler(void){}

void EUSART1_DefaultOverrunErrorHandler(void)
{
    RC1STAbits.CREN = 0;
    RC1STAbits.CREN = 1;
}

void EUSART1_DefaultErrorHandler(void){}

void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void))
{
    EUSART1_FramingErrorHandler = interruptHandler;
}

void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void))
{
    EUSART1_OverrunErrorHandler = interruptHandler;
}

void EUSART1_SetErrorHandler(void (* interruptHandler)(void))
{
    EUSART1_ErrorHandler = interruptHandler;
}

/**
  End of File
*/
#include "mcc_generated_files/mcc.h"

void main(void)
{
    SYSTEM_Initialize();                                                        // Initialize the device

    while (1)
    {
        printf("Hello World! \r\n");
        __delay_ms(2000);
    }
}
效果图:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

3455

帖子

7

粉丝