
#include #include "hw_config.h" u8 uart1_buf[5]; int count1=0; int Flag=0; void Delay(void) { int x,y; for(x=1000;x>0;x--) for(y=1000;y>0;y--); } int main(void) { u8 table[5]; u8 *p=table; SystemInit(); /*系统初始化*/ LED_Configuration(); USART_Configuration(); ADC_Configuration(); while (1) { LED1(1); Delay(); LED1(0); Delay(); if(Flag==1)//接收中断 { for(count1=0;count1 4) { Flag = 1; count1 = 0; } } } 我想让stm32实现接收由串口助手发过来的五个字节的数,然后再由stm32返回给串口助手,我这样子写的程序,第一次可以正确的返回发送的五个数,第二次开始就可能会出错。 请问这边的中断程序怎么写,能够让stm32稳定的每次接收五个字节呢? |
RE:stm32 串口接收字符串 中断程序怎么写?
RE:stm32 串口接收字符串 中断程序怎么写?
RE:stm32 串口接收字符串 中断程序怎么写?
回复:stm32 串口接收字符串 中断程序怎么写?
我不明白,为什么你int count1=0; 就用这个变量呢?你再申请一个好了,你在主函数里面if(Flag==1)//接收中断下,count1已经变成5了。。你说到中断函数里面怎么处理?
我接收了五个字节之后,count1==5之后 就重新将count1==0; 应该不会影响到吧。
RE:stm32 串口接收字符串 中断程序怎么写?
回复:stm32 串口接收字符串 中断程序怎么写?
回复第 4 楼 于2014-03-27 10:11:31发表:
我不明白,为什么你int count1=0; 就用这个变量呢?你再申请一个好了,你在主函数里面if(Flag==1)//接收中断下,count1已经变成5了。。你说到中断函数里面怎么处理?
我接收了五个字节之后,count1==5之后 就重新将count1==0; 应该不会影响到吧。
你是不是想搞个入队出队呢,,你发出去5个数据,你得让你的头地址减掉呀。
回复:stm32 串口接收字符串 中断程序怎么写?
stm32 收到的数据一直是正确的么?还是也是错位的
中断程序里面使用if(count1==5)的话。手动一次一次发送都是正确的。 如果自动循环发送,速度比较快的话,就可能会出现错位。
回复:stm32 串口接收字符串 中断程序怎么写?
回复第 5 楼 于2014-03-27 14:37:11发表:
回复第 4 楼 于2014-03-27 10:11:31发表:
我不明白,为什么你int count1=0; 就用这个变量呢?你再申请一个好了,你在主函数里面if(Flag==1)//接收中断下,count1已经变成5了。。你说到中断函数里面怎么处理?
我接收了五个字节之后,count1==5之后 就重新将count1==0; 应该不会影响到吧。
你是不是想搞个入队出队呢,,你发出去5个数据,你得让你的头地址减掉呀。
因为我上位机每次就是发五个字节,所以我是想,stm32下位机进入中断后每次固定接收五个字节,然后进行判断再返回ADC采样的数值。
RE:stm32 串口接收字符串 中断程序怎么写?
RE:stm32 串口接收字符串 中断程序怎么写?
RE:stm32 串口接收字符串 中断程序怎么写?
回复:stm32 串口接收字符串 中断程序怎么写?
回复第 11 楼 于2014-03-27 21:41:44发表:
for(count1=0;count1
RE:stm32 串口接收字符串 中断程序怎么写?
if(count1 > 4)
{
Uart1_PutString(p , 5);
count1 = 0;
}
RE:stm32 串口接收字符串 中断程序怎么写?