
用串口助手手动发送和1秒一次的定时发送时,STM32F103RCT6能完整地接收到15个字节的数据。 用串口助循环发送时,与延时有关。500毫秒延时,STM32F103RCT6能接收到12个字节的数据。5毫秒延时,STM32F103RCT6只能接收到2个字节的数据。 用实际上位机发送时,STM32F103RCT6能接收到最后1个字节的数据。 实际上位机是这样发送的: for(int j=0;j<16;j++) { mLogMotorNet.SendData(buf[j]); } STM32F103RCT6是这样接收的: for(i=0;i<16;i++) { j=i+1; if(USART_RX_STA==j) a=USART_ReceiveData(USART1);// } 串口是USART1,程序模板是使用正点原子的。USART配置、初始化和中断服务函数都没变动(照抄正点原子的)。 上位机是很早以前开发的,主板和软件系统也是公司自行设计的。上位机发送的速度很快,一瞬间就发送了(眼睛看不出其循环发送过程)。这种情况,STM32F103RCT6怎样才能完整地接收到15个字节的数据? 烦请指导,谢谢! |
stm32f407无法配置定时器2为全部dma
STM32F103TBU6 封装是VFQFPN36 将PD0和PD1配置成CAN不成功是什么原因
串口DMA + 空闲中断收发 ?
F103RCT6芯片对AFIO->MAPR寄存器写入时出错
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
WS2812B怎么显示任意字符 / 图案?
STM32F103RCT6 定位孔 镂空,会影响使用吗?
HAL库1.8.4在做破坏性测试的时候出现g_state永远为busy的情况导致串口通信发送卡死
L9663驱动开发
用rt_thread 环境编写,DAP-LINK 下载烧录,每一次空芯片下载之后就无法二次下载。求解
Res =USART_ReceiveData(USART1); //读取接收到的数据
if((USART_RX_STA&0x8000)==0)//接收未完成
怎么你这是先判断再接收,这样就可能丢字节了
void USART3_IRQHandler(void)
{
uint8_t temp=0;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
temp = USART_ReceiveData(USART3);
usart3_tabel_r[usart3_r_count]=temp;