用的原子阿波罗F429,基本内容是从一个串口读数据然后通过另一个串口发出去,通过cubeMX配置的,代码的关键部分如下
static unsigned char RxBuffer[RXBUFFERSIZE];
static unsigned char TxBuffer[RXBUFFERSIZE];
static unsigned char aRxBuffer=0;
uint8_t Uart1_Rx_Cnt = 0;
uint8_t i=0;
int main(void)
{ HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer, 1);
while (1)
{
HAL_Delay(20);
HAL_UART_Transmit_IT(&huart1, (uint8_t *)&TxBuffer, 100);
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
UNUSED(huart);
if(huart==&huart2)
{
RxBuffer[Uart1_Rx_Cnt++] = aRxBuffer;
if(Uart1_Rx_Cnt==100)
{
for(i=0;i<100;i++)
{
TxBuffer[i]=RxBuffer[i];
}
Uart1_Rx_Cnt=0;
}
HAL_UART_Receive_IT(&huart2, (uint8_t *)&aRxBuffer, 1);
}
}
现在情况是,使用另一台PC用串口助手通过一根USB转232的线接到开发板COM2口,发数据,usart1可以正常输出。然后换陀螺仪(直接输出232信号)接到COM2口,就无法正常工作,通过pb1的led灯判断程序根本没有进入中断。
已知:程序应该是没有问题的;陀螺仪都是广播式发送的,通过USB转接线接到pc上用串口助手可以正常读取数据,陀螺仪部分也是没有问题的;开发板可以接收到PC串口助手发来的数据,开发板硬件部分应该也没问题;Tx Rx引脚我也换着接过,没有用,也不是这方面的问题。其他的波特率什么的都是一样的。
感觉就很奇怪,是不是哪里漏了什么细节。
首先用电脑接个串口工具接到板子上看看能不能读到串口信息,看下发送接收正不正常,不正常就是初始化没弄好。然后再尝试读陀螺仪数据