串口发送字符串指针,串口助手乱显示码,为什么?求大神赐教

2019-07-20 03:01发布

void uart3_init(u32 pclk,u32 bound)
{
        u32 temp;
        temp = (pclk*1000000+bound/2)/bound;
  RCC->AHB1ENR|=1<<1;                           //使能PORTB口时钟  
        RCC->APB1ENR|=1<<18;                          //使能串口3时钟
        GPIO_Set(GPIOB,PIN10|PIN11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);//PB10,PB11,复用功能,上拉输出
        GPIO_AF_Set(GPIOB,10,7);                //PB10,AF7
        GPIO_AF_Set(GPIOB,11,7);                //PB11,AF7
         USART3->CR1=0;
   USART3->CR1|=1<<3;//使能发送
         USART3->CR1|=1<<4;//使能接收
         USART3->CR1|=0<<15;//设置over8=0,16倍过采样
         USART3->CR1|=0<<28;
         USART3->CR1|=0<<12;
         USART3->BRR|= temp;
         USART3->CR1|=1<<0;
}

void usart_senddata(char* buff)
{
while(*buff!='')
{
  USART3->TDR=*buff;
        while((USART3->ISR&0x40)==0)
   buff++;
}

}
void usart1_senddata(const char* buff)
{
        u8 data;
  while(*buff!='')
{
        data = *buff;
  USART1->TDR=*buff;
        while((USART1->ISR&0x40)==0)
   buff++;
}
// LED0(0);
}

void wifi_ap(void)
{
  usart1_senddata("AT+CWMODE=2 ");
        delay_ms(20);
  usart1_senddata("AT+RST ");
        delay_ms(20);
        usart1_senddata("AT+CWSAP=“TP_LINK8266”,“123456”,1,4 ");
        delay_ms(20);
        LED0(0);
        usart1_senddata("AT+CIPMUX=1 ");
        delay_ms(20);
        usart1_senddata("AT+CIPSERVER=1,8086 ");
        delay_ms(20);
        LED1(1);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
edmund1234
1楼-- · 2019-07-20 06:42
用指针不会有问题的, 我也用子指针传的, 不同的是我没有直接改参数指针, 而是把参数的指针拷贝到新定义的局部指针, 改是改此局部指针, 参数的不改。
你试试吧
正点原子
2楼-- · 2019-07-20 07:13
估计是波特率设置有问题
潘月胜
3楼-- · 2019-07-20 08:00
 精彩回答 2  元偷偷看……
潘月胜
4楼-- · 2019-07-20 11:35
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-20 13:00
潘月胜 发表于 2019-3-17 20:53
会不会是char*占用了四个字节的原因?而串口只能发送一个字节

你可以先测试下发送一个简单的数据,看正常不?
如果正常就不是波特率问题了
潘月胜
6楼-- · 2019-07-20 17:44
 精彩回答 2  元偷偷看……

一周热门 更多>