求大虾帮助啊,stm32串口通讯实现一个简单的计算

2019-03-23 19:06发布

求大虾帮助啊,急急急啊,调了3天了,STM32串口通讯实现简单的计算功能,还是调不出,我的配置都正确了,下面是我的it.c里的中断服务函数
#include "stm32f10x_it.h"
#include"stdio.h"
#include "string.h"

static  int j=0;
void USART1_IRQHandler(void)
{
        int i=1,k,m,n=0,index=0;
        
           char str[6]="";
           if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)// 如果是串口接收中断
        {        
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清除USARTx的中断待处理位
                USART_ClearFlag(USART1,USART_FLAG_TC);  //清除标志位

                if(USART_ReceiveData(USART1)!=' ')
                {
                        str[j]=USART_ReceiveData(USART1);        // 将接收到的字节发送出去
                        j++;        
                }
                if(USART_ReceiveData(USART1)==' ')
                {
                        m=strlen(str);
                        for(j=0;j<m-1;j++)
                                i=i*10;
                        for(j=0;j<m;j++)
                        {
                                n=(str[j]-48)*i+n;
                                i=i/10;
                        }
                        n=10000-n;
                        k=n;
                        while(n>0)/*index保存x的位数*/
                        {
                        n = n / 10;
                        index++;
                    }
                    for(j=0;j<index;j++)
                        {
                        str[index-j-1] = k % 10 +48;/*记得加'0'*/
                        k = k / 10;
                    }
                    while(  str[j] != '')
                    {
                                USART_SendData(USART1 ,str[j] );
                                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
                                j++;
                    }
                        j=0;
                }
        }
               
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。