本帖最后由 陳聖文 于 2018-10-17 15:30 编辑
小弟在編寫MCU程序時想升級自己的USART的傳輸版本
因為之前的作法是...
設定好USART
設定好DMA
在特定陣列一個字元一個字元輸入
以下是程序內的東西
- TX_count = 0;
- USART_TX_buffer[TX_count++] = 'T';
- USART_TX_buffer[TX_count++] = ',';
- USART_TX_buffer[TX_count++] = 'F';
- USART_TX_buffer[TX_count++] = ',';
- USART_TX_buffer[TX_count++] = 'P';
- USART_TX_buffer[TX_count++] = ',';
-
- DMA1_Channel2->CNDTR = TX_count; //需傳輸的資料量
- DMA1_Channel2->CCR |= DMA_CCR_EN; //啟動TX_DMA
- USART1->CR1 |= USART_CR1_TE; //啟動TX
复制代码
我想試著改成
- Add_Char(&"T,F,P,",6);
-
- DMA1_Channel2->CNDTR = TX_count; //需傳輸的資料量
- DMA1_Channel2->CCR |= DMA_CCR_EN; //啟動TX_DMA
- USART1->CR1 |= USART_CR1_TE; //啟動TX
复制代码
目前副程式Add_Char的程序長這樣
- void Add_Char(uint8_t *char_start, uint8_t Value_bits)
- {
- while(Value_bits--)
- {
- USART_TX_buffer[TX_count+Value_bits] = char_start[Value_bits];
- }
- }
复制代码
但不知為何一值跳出錯誤...SrcWayne_communicate.c(19): error: #167: argument of type "char (*)[7]" is incompatible with parameter of type "uint8_t *"
我在想要怎麼除錯
這部分還請各位前輩多多指點,感謝
把&去掉试试
程序里的引号引起来的字符串一般都是变成了指针,所以不用再加&。
成功了...
感謝大大幫忙
一周热门 更多>