你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USART_SendArray(DEBUG_USARTx , a,10);没能输出a[10]中的元素?

[复制链接]
csz9981 提问时间:2019-4-22 21:36 /
在串口试验中,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就没有了?

收藏 评论3 发布时间:2019-4-22 21:36

举报

3个回答
STM1024 回答时间:2019-4-22 22:43:17
本帖最后由 stm1024 于 2019-4-22 22:47 编辑

我想问一下,这个函数的定义是什么、
还有个问题是,你采用的是字符形式的显示,而在ASCII码中,0x20以前的都是不可打印字符,建议你用HEX形式显示看看,或者把a[10]改成{0x30,0x31,...0x39},这样就可以显示0-9的字符了

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

wenyangzeng 回答时间:2019-4-23 11:50:10
本帖最后由 wenyangzeng 于 2019-4-23 11:52 编辑

数组a[10]是从a[0]到a[9]而已,不包括a[10],要输出ASCII的0-9,应该把a[n]+0x30;

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

csz9981 回答时间:2019-4-24 08:45:02
wenyangzeng 发表于 2019-4-23 11:50
数组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]);       
        }

这回打印出来了。感谢。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版