USART配合DMA傳輸資料的問題,主要問題牽涉指標

2019-12-17 21:27发布

本帖最后由 陳聖文 于 2018-10-17 15:30 编辑

小弟在編寫MCU程序時想升級自己的USART的傳輸版本
因為之前的作法是...

設定好USART
設定好DMA
在特定陣列一個字元一個字元輸入
以下是程序內的東西

  1.         TX_count                                        =        0;
  2.         USART_TX_buffer[TX_count++]        =        'T';
  3.         USART_TX_buffer[TX_count++]        =        ',';
  4.         USART_TX_buffer[TX_count++]        =        'F';
  5.         USART_TX_buffer[TX_count++]        =        ',';
  6.         USART_TX_buffer[TX_count++]        =        'P';
  7.         USART_TX_buffer[TX_count++]        =        ',';
  8.        
  9.         DMA1_Channel2->CNDTR                =        TX_count;        //需傳輸的資料量
  10.         DMA1_Channel2->CCR                |=        DMA_CCR_EN;        //啟動TX_DMA
  11.         USART1->CR1                        |=        USART_CR1_TE;        //啟動TX
复制代码

我想試著改成

  1.         Add_Char(&"T,F,P,",6);
  2.        
  3.         DMA1_Channel2->CNDTR        =        TX_count;        //需傳輸的資料量
  4.         DMA1_Channel2->CCR        |=        DMA_CCR_EN;        //啟動TX_DMA
  5.         USART1->CR1                |=        USART_CR1_TE;        //啟動TX
复制代码

目前副程式Add_Char的程序長這樣
  1. void        Add_Char(uint8_t        *char_start,        uint8_t Value_bits)
  2. {
  3.         while(Value_bits--)
  4.         {               
  5.                 USART_TX_buffer[TX_count+Value_bits]        =        char_start[Value_bits];
  6.         }
  7. }
复制代码

但不知為何一值跳出錯誤...SrcWayne_communicate.c(19): error:  #167: argument of type "char (*)[7]" is incompatible with parameter of type "uint8_t *"
我在想要怎麼除錯
這部分還請各位前輩多多指點,感謝
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
lcw_swust
1楼-- · 2019-12-17 22:24
Add_Char(&"T,F,P,",6);
把&去掉试试
程序里的引号引起来的字符串一般都是变成了指针,所以不用再加&。
陳聖文
2楼-- · 2019-12-17 22:39
lcw_swust 发表于 2018-10-17 16:48
Add_Char(&"T,F,P,",6);
把&去掉试试
程序里的引号引起来的字符串一般都是变成了指针,所以不用再加&。 ...

成功了...
感謝大大幫忙

一周热门 更多>