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

STM32F302R8串口发送字符串

[复制链接]
layl 提问时间:2018-7-1 21:34 /
各位大佬,我写了一个串口发送字符串的程序,但是总是总是发送不出来,找了半天没找到原因,感觉是陷入中断循环了,代码如下:

unsigned char TXBuffer[5]={'a','b','c','d','e'};
unsigned char UART_Flag = 0;
unsigned char DataToBeSent[5];
unsigned char DataPointer=0;

void sendstring(unsigned char *ptr)
{
    unsigned char j=0;
    if(UART_Flag==0)
    {
                          UART_Flag=1;
        for(j=0;j<5;j++)
        {
            DataToBeSent[j] = *ptr++;
        }
      USART2->TDR = DataToBeSent[0];
      DataPointer=1;
    }
}



中断代码:
extern u8 UART_Flag;
extern u8 DataToBeSent[5];
extern u8 DataPointer;

void USART2_IRQHandler (void)
{
        if (USART_GetFlagStatus(USART2,USART_FLAG_TC) ==SET)
        {

                if(UART_Flag == 1)
                {
                        USART2->TDR = DataToBeSent[DataPointer++];
                        if(DataPointer>(5-1))
                        {
                                 UART_Flag = 0;
                        }   
                }
                USART_ClearITPendingBit(USART2,USART_IT_TC);
        }
}

收藏 评论5 发布时间:2018-7-1 21:34

举报

5个回答
七哥 回答时间:2018-7-1 22:55:47
刚开始不要自己写,先跑下样例程序。
从你有限的代码中,看不出问题来

评分

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

查看全部评分

wudianjun2001 回答时间:2018-7-2 08:34:40
找个例程对照修改比较好

评分

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

查看全部评分

layl 回答时间:2018-7-13 09:09:13
toofree 发表于 2018-7-1 22:55
刚开始不要自己写,先跑下样例程序。
从你有限的代码中,看不出问题来

我跑完样例,再参考了别的代码写的,就是看了半天不知道错在哪
layl 回答时间:2018-7-13 09:10:18
wudianjun2001 发表于 2018-7-2 08:34
找个例程对照修改比较好

我没找到stm32f3的发送字符串程序,发送字符没问题,不知道为什么发送字符串就有问题了
fighter12315 回答时间:2018-7-13 09:53:44
发送的时候没有等待发送完毕??你看看例程 发送的时候是不是会有个while循环来等待发送标志位置位

评分

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

查看全部评分

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