野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21617|回复: 13

【Q群答疑】串口发送1个字节,两个字节,发送数组,发送字符串函数汇总

[复制链接]
发表于 2016-8-18 16:30:08 | 显示全部楼层 |阅读模式
1、发送一个字节
  1. /*****************  发送一个字节 **********************/
  2. void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
  3. {
  4.         /* 发送一个字节数据到USART */
  5.         USART_SendData(pUSARTx,ch);
  6.                
  7.         /* 等待发送数据寄存器为空 */
  8.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);        
  9. }
复制代码
2、发送两个字节
  1. /*****************  发送一个16位数 **********************/
  2. void Usart_SendHalfWord( USART_TypeDef * pUSARTx, uint16_t ch)
  3. {
  4.         uint8_t temp_h, temp_l;
  5.         
  6.         /* 取出高八位 */
  7.         temp_h = (ch&0XFF00)>>8;
  8.         /* 取出低八位 */
  9.         temp_l = ch&0XFF;
  10.         
  11.         /* 发送高八位 */
  12.         USART_SendData(pUSARTx,temp_h);        
  13.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
  14.         
  15.         /* 发送低八位 */
  16.         USART_SendData(pUSARTx,temp_l);        
  17.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);        
  18. }
复制代码
3、发送8位的数组
  1. uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};
  2. Usart_SendArray( DEBUG_USARTx, a, 10);

  3. /* 发送8位的数组 */
  4. void Usart_SendArray( USART_TypeDef * pUSARTx, uint8_t *array, uint16_t num)
  5. {
  6.   uint8_t i;
  7.         
  8.         for(i=0; i<num; i++)
  9.   {
  10.             /* 发送一个字节数据到USART */
  11.             Usart_SendByte(pUSARTx,array[i]);        
  12.   
  13.   }
  14.         /* 等待发送完成 */
  15.         while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
  16. }
复制代码
4、发送字符串
  1. /*****************  发送字符串 **********************/
  2. void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
  3. {
  4.         unsigned int k=0;
  5.   do
  6.   {
  7.       Usart_SendByte( pUSARTx, *(str + k) );
  8.       k++;
  9.   } while(*(str + k)!='\0');
  10.   
  11.   /* 等待发送完成 */
  12.   while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
  13.   {}
  14. }
复制代码
5、以上函数如何调用
  1. uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};

  2.         USART_Config();
  3.   Usart_SendByte( DEBUG_USARTx, 'A');
  4.         
  5.         Usart_SendString( DEBUG_USARTx, "\n欢迎使用野火STM32F103开发板");
  6.         Usart_SendHalfWord( DEBUG_USARTx, 0x5642);
  7.         Usart_SendArray( DEBUG_USARTx, a, 10);
复制代码


回复

使用道具 举报

发表于 2016-8-18 16:47:08 | 显示全部楼层
挺好的帖子没人顶。。。。
回复 支持 反对

使用道具 举报

发表于 2016-8-18 16:55:41 | 显示全部楼层
顶顶顶~~~~~~~~~~~~
回复

使用道具 举报

 楼主| 发表于 2016-8-18 17:31:08 | 显示全部楼层
Mr.Guo 发表于 2016-8-18 16:47
挺好的帖子没人顶。。。。

以后简单有人问这样的问题,就把这个帖子丢给他。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-18 17:41:19 | 显示全部楼层
Mr.Guo 发表于 2016-8-18 16:47
挺好的帖子没人顶。。。。

我要是隐藏了要回复就很多人顶了。
回复 支持 反对

使用道具 举报

发表于 2016-8-18 17:47:53 | 显示全部楼层
   学习了
回复 支持 反对

使用道具 举报

发表于 2016-8-18 18:51:51 | 显示全部楼层
fire 发表于 2016-8-18 17:31
以后简单有人问这样的问题,就把这个帖子丢给他。

好的  收到
回复 支持 反对

使用道具 举报

发表于 2016-8-18 20:44:38 | 显示全部楼层
必须顶一下
回复 支持 反对

使用道具 举报

发表于 2016-8-19 09:15:07 | 显示全部楼层
Mr.Guo 发表于 2016-8-18 16:47
挺好的帖子没人顶。。。。

大家可以提问也可以发表个人的一些思路,要是都来发一句“顶楼主!!!”,那也不是LZ的本意啊
回复 支持 反对

使用道具 举报

发表于 2016-8-19 10:28:27 | 显示全部楼层
哈哈哈,我看懂了。
回复 支持 反对

使用道具 举报

发表于 2017-5-14 09:30:55 | 显示全部楼层
XXDDDGS 发表于 2016-8-19 10:28
哈哈哈,我看懂了。

发送数组那个,编译没有错误,怎么在串口调试中没有反应啊
回复 支持 反对

使用道具 举报

发表于 2017-5-14 09:31:38 | 显示全部楼层
火哥,发送数组那个,怎么没有反应啊
回复 支持 反对

使用道具 举报

发表于 2018-4-8 08:48:06 | 显示全部楼层
受教了
回复

使用道具 举报

发表于 2018-10-29 22:35:49 | 显示全部楼层
发送数组那个,数组元素大于0x80就出错了;难道是我编译器的问题?
我直接简单调用库函数us_senddata发送大于0x80的数也会有问题,问题是发送第一次没反应,第二次会连续出现两个字节。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 04:44 , Processed in 0.053688 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表