在串口试验中,USART_SendArray(DEBUG_USARTx , a,10);没能输出a[10]中的元素? 例程中编写了以下程序, #include "stm32f10x.h" #include "bsp_led.h" #include "bsp_usart.h" int main() { uint8_t ch; uint8_t a[10]={1,2,3,4,5,6,7,8,9,10}; USART_Config(); USART_SendByte(DEBUG_USARTx , 0x64);//01100100 printf("\n"); USART_Send2Byte(DEBUG_USARTx , 0xff56); printf("\n"); USART_SendArray(DEBUG_USARTx , a,10); printf("\n"); USART_SendString(DEBUG_USARTx, "sendString"); printf("\n"); printf("chuankou printf函数测试\n"); putchar('b'); printf("\n"); while(1) { // ch = getchar(); ch = '1'; printf("ch = %c\n",ch); switch(ch) { case '1'ED_GREEN; break; case '2'ED_BLUE; break; case '3'ED_RED; break; defaultED_RGBOFF; break; } } } 我debug测试结果如下: d V s chuankou printf函数测试 b ch = 1 问题是: USART_SendByte(DEBUG_USARTx , 0x64);//01100100 输出结果是d USART_Send2Byte(DEBUG_USARTx , 0xff56); 输出结果是 V USART_SendArray(DEBUG_USARTx , a,10); 没能输出a[10]中的元素。 USART_SendString(DEBUG_USARTx, "sendString"); 只输出了一个 s就没有了? |
我想问一下,这个函数的定义是什么、
还有个问题是,你采用的是字符形式的显示,而在ASCII码中,0x20以前的都是不可打印字符,建议你用HEX形式显示看看,或者把a[10]改成{0x30,0x31,...0x39},这样就可以显示0-9的字符了
评分
查看全部评分
数组a[10]是从a[0]到a[9]而已,不包括a[10],要输出ASCII的0-9,应该把a[n]+0x30;
评分
查看全部评分
USART_SendArray(DEBUG_USARTx , a,10);
for(ch=0;ch<10;ch++)
{printf("a[%d]=%d\n",ch,a[ch]);
}
这回打印出来了。感谢。