初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2018-4-16
- 在线时间
- 14 小时
|

楼主 |
发表于 2018-5-15 12:44:58
|
显示全部楼层
typedef struct
{
jpeg_image image_number[IMAGE_MAX_NUMBER];
uint16_t image_amount;
uint16_t image_write_No;
volatile uint16_t image_read_No;
}valid_image_data;
volatile valid_image_data image; //声明
void usart_order_handle()
{
if(Order_come_flag == 1) //现在问题在这下面置0再返回会识别为1,串口发送读一下就不识别为1了。 (这部分代码放到main,image 结构体里的变量读取错,在回调函数和main中读的地址是一样的。但是主函数无法正常操作)
{
//若在这加上串口发送程序就会正常,在if上面是一样可以的。是读取发送的Order_come_flag <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
delay_ms(10000);
if(aRxBuffer_usart3[0] == 'F')
{
// USART3->DR=aRxBuffer_usart3[0];
// while((USART3->SR&0X40)==0);
// delay_ms(10);
// USART3->DR=image.image_read_No;
// while((USART3->SR&0X40)==0);
if(image.image_read_No == 0)
image.image_read_No = 2;
else image.image_read_No --;
delay_ms(10);
// USART3->DR=(uint8_t)image.image_read_No;
// while((USART3->SR&0X40)==0);
}
// uint8_t point[4];
// sprintf(point,"%08x",&image.image_read_No);
// usart3_send_bytes(point,sizeof(point));
USART3->DR=(uint8_t)image.image_read_No;
while((USART3->SR&0X40)==0);
USART3->DR=(uint8_t)(image.image_read_No >> 8);
while((USART3->SR&0X40)==0);
delay_ms(5000);
// flash_read_to_usart();
Order_come_flag = 0; //现在置0,再回到上面读取会识别为1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
}
///串口中程序
volatile uint8_t Order_come_flag = 0; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
void USART3_IRQHandler(void)
{
u8 Res;
if((__HAL_UART_GET_FLAG(&USART3_Handler,UART_FLAG_RXNE)!=RESET)) //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
{
HAL_UART_Receive(&USART3_Handler,&Res,1,1000);
// if(Res == 0x41)
aRxBuffer_usart3[0] = Res;
Order_come_flag = 1; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
HAL_UART_IRQHandler(&USART3_Handler);
HAL_UART_Receive_IT(&USART3_Handler, (u8 *)aRxBuffer_usart3, 1);
} |
|