[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】+ 串口发送

[复制链接]
1002|0
 楼主| 比神乐 发表于 2021-1-7 14:20 | 显示全部楼层 |阅读模式
今天捣鼓了一下串口发送。
原理图:

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

  2. volatile eusart1_status_t eusart1RxLastError;

  3. void (*EUSART1_FramingErrorHandler)(void);
  4. void (*EUSART1_OverrunErrorHandler)(void);
  5. void (*EUSART1_ErrorHandler)(void);

  6. void EUSART1_DefaultFramingErrorHandler(void);
  7. void EUSART1_DefaultOverrunErrorHandler(void);
  8. void EUSART1_DefaultErrorHandler(void);

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

  16.     EUSART1_SetFramingErrorHandler(EUSART1_DefaultFramingErrorHandler);
  17.     EUSART1_SetOverrunErrorHandler(EUSART1_DefaultOverrunErrorHandler);
  18.     EUSART1_SetErrorHandler(EUSART1_DefaultErrorHandler);

  19.     eusart1RxLastError.status = 0;
  20. }

  21. void EUSART1_Write(uint8_t txData)
  22. {
  23.     while(0 == PIR1bits.TX1IF)
  24.     {
  25.     }

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

  28. void putch(char txData)
  29. {
  30.     EUSART1_Write(txData);
  31. }

  32. void EUSART1_DefaultFramingErrorHandler(void){}

  33. void EUSART1_DefaultOverrunErrorHandler(void)
  34. {
  35.     RC1STAbits.CREN = 0;
  36.     RC1STAbits.CREN = 1;
  37. }

  38. void EUSART1_DefaultErrorHandler(void){}

  39. void EUSART1_SetFramingErrorHandler(void (* interruptHandler)(void))
  40. {
  41.     EUSART1_FramingErrorHandler = interruptHandler;
  42. }

  43. void EUSART1_SetOverrunErrorHandler(void (* interruptHandler)(void))
  44. {
  45.     EUSART1_OverrunErrorHandler = interruptHandler;
  46. }

  47. void EUSART1_SetErrorHandler(void (* interruptHandler)(void))
  48. {
  49.     EUSART1_ErrorHandler = interruptHandler;
  50. }

  51. /**
  52.   End of File
  53. */
  1. #include "mcc_generated_files/mcc.h"

  2. void main(void)
  3. {
  4.     SYSTEM_Initialize();                                                        // Initialize the device

  5.     while (1)
  6.     {
  7.         printf("Hello World! \r\n");
  8.         __delay_ms(2000);
  9.     }
  10. }
效果图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

470

主题

3537

帖子

7

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