[原创] Hanker M4 第7篇 串口查询法

常见泽1   2015-5-17 09:03 楼主
1.电路图
      首先看下串口的电路(主要知道采用的是串口5,that is ok)
QQ图片20150509154041.png

2.部分源代码       首先我们必须了解一些串口的库函数,你要使用库函数,所以你 要了解各个库函数之间的联系与区别,不然用哪个,怎么用你都不知道。        这里我主要看的都是M3的串口的库函数,相信和M4几乎应该是一样的,如果有那些是不一样的,还希望网友指出。
  1. (1)UARTConfigSetExpClk( )
  2. 功能
  3. UART配置(要求提供明确的时钟速率)
  4. 原型
  5. void UARTConfigSetExpClk(unsigned long ulBase,
  6. unsigned long ulUARTClk,
  7. unsigned long ulBaud,
  8. unsigned long ulConfig)
  9. 参数
  10. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  11. ulUARTClk:提供给UART模块的时钟速率,即系统时钟频率
  12. ulBaud:期望设定的波特率
  13. ulConfig:UART端口的数据格式,取下列各组数值之间的“或运算”组合形式:
  14. ● 数据字长度
  15. UART_CONFIG_WLEN_8 // 8位数据
  16. UART_CONFIG_WLEN_7 // 7位数据
  17. UART_CONFIG_WLEN_6 // 6位数据
  18. UART_CONFIG_WLEN_5 // 5位数据
  19. ●停止位
  20. UART_CONFIG_STOP_ONE // 1个停止位
  21. UART_CONFIG_STOP_TWO // 2个停止位(可降低误码率)
  22. ● 校验位
  23. UART_CONFIG_PAR_NONE // 无校验
  24. UART_CONFIG_PAR_EVEN // 偶校验
  25. UART_CONFIG_PAR_ODD // 奇校验
  26. UART_CONFIG_PAR_ONE // 校验位恒为1
  27. UART_CONFIG_PAR_ZERO // 校验位恒为0

  28. (2)UARTConfigSet( )
  29. 功能
  30. UART配置(自动获取时钟速率)
  31. 原型
  32. #define UARTConfigSet(a, b, c) UARTConfigSetExpClk(a, SysCtlClockGet( ), b, c)
  33. 参数
  34. 详见上个函数描述
  35. 返回

  36. 说明
  37. 本宏函数常常用来代替函数UARTConfigSetExpClk( ),在调用之前应当先调用SysCtlClockSet( )函数设置系统时钟(不要使用误差很大的内部振荡器IOSC、IOSC/4、INT30等)

  38. // 配置UART0:波特率9600,8个数据位,1个停止位,无校验
  39. (3)UARTConfigSet(UART0_BASE, 9600, UART_CONFIG_WLEN_8 |
  40. UART_CONFIG_STOP_ONE |
  41. UART_CONFIG_PAR_NONE);
  42. // 配置UART1:波特率最大,5个数据位,1个停止位,无校验
  43. UARTConfigSet(UART1_BASE, SysCtlClockGet( ) / 16, UART_CONFIG_WLEN_5 |
  44. UART_CONFIG_STOP_ONE |
  45. UART_CONFIG_PAR_NONE);
  46. // 配置UART2:波特率2400,8个数据位,2个停止位,偶校验
  47. UARTConfigSet(UART2_BASE, 2400, UART_CONFIG_WLEN_8 |
  48. UART_CONFIG_STOP_TWO |
  49. UART_CONFIG_PAR_EVEN);

  50. (4)UARTEnable( )
  51. 功能
  52. 使能指定UART端口的发送和接收操作
  53. 原型
  54. void UARTEnable(unsigned long ulBase)
  55. 参数
  56. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  57. 811和9b96的UART0端口都是对应于GPIO管脚的PA0和PA1

  58. (5)函数UARTCharPut( )
  59. 功能
  60. 发送1个字符到指定的UART端口(等待)
  61. 原型
  62. void UARTCharPut(unsigned long ulBase, unsigned char ucData)
  63. 参数
  64. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  65. ulData:要发送的字符
  66. 返回
  67. 无(在未发送完毕前不会返回)

  68. (6)函数UARTCharGet( )
  69. 功能
  70. 从指定的UART端口接收1个字符(等待)
  71. 原型
  72. long UARTCharGet(unsigned long ulBase)
  73. 参数
  74. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  75. 返回
  76. 读取到的字符,并自动转换为long型(在未收到字符之前会一直等待)

  77. (7)函数UARTCharPutNonBlocking( )
  78. 功能
  79. 发送1个字符到指定的UART端口(不等待)
  80. 原型
  81. tBoolean UARTCharPutNonBlocking(unsigned long ulBase, unsigned char ucData)
  82. 参数
  83. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  84. ulData:要发送的字符
  85. 返回
  86. 如果发送FIFO里有可用空间,则将数据放入发送FIFO,并立即返回true
  87. 如果发送FIFO里没有可用空间,则立即返回false(发送失败)
  88. 说明
  89. 通常,在调用本函数之前应当先调用UARTSpaceAvail( )确认发送FIFO里有可用空间

  90. (8)函数UARTCharGetNonBlocking( )
  91. 功能
  92. 从指定的UART端口接收1个字符(不等待)
  93. 原型
  94. long UARTCharGetNonBlocking(unsigned long ulBase)
  95. 参数
  96. ulBase:UART端口的基址,取值UART0_BASE、UART1_BASE或UART2_BASE
  97. 返回
  98. 如果接收FIFO里有字符,则立即返回接收到的字符(自动转换为long型)
  99. 如果接收FIFO里没有字符,则立即返回-1(接收失败)
  100. 说明
  101. 通常,在调用本函数之前应当先调用UARTCharsAvail( )来确认接收FIFO里有字符
  102. 现在来实现PC一个发送一个数据,串口接收,然后返回PC的试验。

3. 功能及显示      简单的串口收发(非中断实现)(清风的源码上修改) QQ图片20150509160040.png




回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复