OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4012|回复: 4

怎么用串口发送字符串,不会灵活用官方给的函数

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-2-2
在线时间
2 小时
发表于 2022-2-16 10:04:59 | 显示全部楼层 |阅读模式
1金钱
用官方给的USART_SendData函数发送,如果第二个参数直接跟字符串的话会出错,但是如果强行改变格式直接用u16的话,输出的字符和预期不一样,编译的时候虽然不出错,但是有警告main.c(63): warning:  #767-D: conversion from pointer to smaller integer。主函数如下
int main(void)
{       
         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
         usart_init();
         delay_init();
         LED_Init();
         while(1)
         {
                USART_SendData(USART1,(u16)"ZnSn");
                 delay_ms(1000);
                 led0=!led0;
         }
}



最后运行的结果根据延时时间的不同也会不一样,延时500ms输出1c(16进制下),延时1000ms输出90(16进制下)。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8638
金钱
8638
注册时间
2020-5-11
在线时间
4090 小时
发表于 2022-2-16 10:05:00 | 显示全部楼层
  1. void UART_SendByte(USART_TypeDef* USARTx, U8 Data)
  2. {
  3.         while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE)==RESET);        //等待"发送寄存器空"
  4.         USART_SendData(USARTx, Data);
  5. }

  6. void UART_SendStr(USART_TypeDef* USARTx, U8* s)
  7. {
  8.         while(*s)
  9.         {
  10.                 UART_SendByte(USARTx, *s);
  11.                 s++;
  12.         }
  13. }
复制代码
专治疑难杂症
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
金钱
2100
注册时间
2021-7-17
在线时间
658 小时
发表于 2022-2-16 14:53:34 | 显示全部楼层
定义一个接收数据缓冲区,或者可以自己写一个发送字符串的函数
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-2-2
在线时间
2 小时
 楼主| 发表于 2022-2-17 16:31:59 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2022-2-2
在线时间
2 小时
 楼主| 发表于 2022-2-17 16:32:48 | 显示全部楼层
ChenRyan 发表于 2022-2-16 14:53
定义一个接收数据缓冲区,或者可以自己写一个发送字符串的函数

谢谢,我还想问一下数据缓冲区是啥啊
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 11:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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