这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» 【转载】串口FIFO的comGetChar函数的使用方法--from三叶

共1条 1/1 1 跳转至

【转载】串口FIFO的comGetChar函数的使用方法--from三叶

工程师
2024-02-21 00:13:06 打赏

简单使用方式一:

这里用户可以将读取的read值存到一个数组里面,每读取到一次往数组里面存一下。



略微复杂的使用方式二:
比如远程端发送的数据格式如下:



程序代码就可以这样实现:

  1. /*

  2. *********************************************************************************************************

  3. * 函 数 名: main

  4. * 功能说明: c程序入口

  5. * 形 参: 无

  6. * 返 回 值: 错误代码(无需处理)

  7. *********************************************************************************************************

  8. */

  9. int main(void)

  10. {

  11. uint8_t ucKeyCode;

  12. uint8_t read;

  13. uint8_t ucStatus = 0; /* 状态机标志 */

  14. uint8_t ucCount=0, i;

  15. uint8_t buf[128];



  16. bsp_Init(); /* 硬件初始化 */


  17. bsp_StartAutoTimer(0, 100); /* 启动1个100ms的自动重装的定时器 */


  18. /* 主程序大循环 */

  19. while (1)

  20. {

  21. /* CPU空闲时执行的函数,在 bsp.c */

  22. bsp_Idle();


  23. /* 判断定时器超时时间 */

  24. if (bsp_CheckTimer(0))

  25. {

  26. /* 每隔100ms 进来一次 */

  27. /* 翻转LED2的状态 */

  28. bsp_LedToggle(2);

  29. }


  30. /* 接收到的串口命令处理 */

  31. if (comGetChar(COM1, &read))

  32. {

  33. switch (ucStatus)

  34. {

  35. /* 状态0保证接收到0x01 */

  36. case 0:

  37. if(read == 0x01)

  38. {

  39. ucStatus = 1;

  40. }

  41. break;


  42. /* 状态1保证接收到0x03 */

  43. case 1:

  44. if(read == 0x03)

  45. {

  46. ucStatus = 2;

  47. }

  48. else

  49. {

  50. ucStatus = 0;

  51. }

  52. break;


  53. /* 状态2保证接收到0x0E */

  54. case 2:

  55. if(read == 0x0E)

  56. {

  57. ucStatus = 3;

  58. }

  59. else

  60. {

  61. ucStatus = 0;

  62. }

  63. break;


  64. case 3:

  65. buf[ucCount] = read;


  66. /* 接收够15个数据 */

  67. if(ucCount == 15)

  68. {

  69. /* 打印接收到的数据值 */

  70. printf("接收到的数据:");

  71. for(i = 0; i < ucCount + 1; i++)

  72. {

  73. printf("%x ", buf[i]);

  74. }

  75. printf("\r\n");

  76. ucStatus = 0;

  77. ucCount=0;

  78. }

  79. else

  80. {

  81. ucCount++;

  82. }

  83. break;


  84. default:

  85. break;

  86. }

  87. }


  88. }

  89. }

来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]