找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2934|回复: 5
打印 上一主题 下一主题
收起左侧

[已解决]51单片机串口发送字符串问题,显示错误warning C214: 'Argument'

[复制链接]
跳转到指定楼层
楼主
ID:776619 发表于 2022-5-30 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MAIN.C(170): warning C214: 'Argument': conversion: pointer to non-pointer
程序部分如下:
{
........
.........
uart_send("hello world!",sizeof("hello world!"));
......;
......;
}
uart_send(unsigned char *string123,int num)
{
for (n=0;n<num;n++)
   {
    SBUF=*string123++;
    while (!TI);
    TI=0;
    }


请问为什么会出现这问题,如何解决???
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:924942 发表于 2022-5-30 20:23 来自手机 | 只看该作者
string123形参是个指针,你应该传递字符串首地址,而不是自符串
回复

使用道具 举报

板凳
ID:883242 发表于 2022-5-30 20:43 | 只看该作者
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

其实你的代码没必要加num
  1. uart_send(const char *string123)
  2. {
  3. for (;;)
  4.    {
  5.     if(*string123==0)break;
  6.     SBUF=*string123++;
  7.     while (!TI);
  8.     TI=0;
  9.     }
  10. }
复制代码

回复

使用道具 举报

地板
ID:776619 发表于 2022-5-30 22:11 | 只看该作者
Hephaestus 发表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

让我试试看,如果不用NUM,那它括号里的东西也会节省ROM空间是不是?
回复

使用道具 举报

5#
ID:776619 发表于 2022-5-30 22:40 | 只看该作者
Hephaestus 发表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

我错了,你写的也不能通过,同样报警但能编译过。后来看看原来是我在文件头定义那里string前面指针那个星没写。补上后我写的也可以通过了。程序别的问题还有,但这个问题是解决了。
回复

使用道具 举报

6#
ID:776619 发表于 2022-5-30 22:43 | 只看该作者
sgql 发表于 2022-5-30 20:23
string123形参是个指针,你应该传递字符串首地址,而不是自符串

写字符串获得的也只是首地址。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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