中级会员
 
- 积分
- 330
- 金钱
- 330
- 注册时间
- 2015-6-24
- 在线时间
- 124 小时
|
1金钱
本帖最后由 _yi_feng_ 于 2019-9-18 17:32 编辑
各位大佬: 小弟最近STM32F429核心板上在调试串口通信,使用HAL库的中断方式,接收发送都是用中断,以下代码是初始化和回调函数:
void DeviceUart_Init(void)
{
UART1_Handler.Instance = USART1;
UART1_Handler.Init.BaudRate = cDeviceBound;
UART1_Handler.Init.WordLength = UART_WORDLENGTH_8B;
UART1_Handler.Init.StopBits = UART_STOPBITS_1;
UART1_Handler.Init.Parity = UART_PARITY_NONE;
UART1_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART1_Handler.Init.Mode = UART_MODE_TX_RX;
HAL_UART_Init(&UART1_Handler);
HAL_UART_Receive_IT(&UART1_Handler, (u8 *)gstvDevice.RxBuffer, RXBUFFERSIZE)
}
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance == USART1)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
GPIO_Initure.Pin = cDeviceRxPin;
GPIO_Initure.Mode = GPIO_MODE_AF_PP;
GPIO_Initure.Pull = GPIO_PULLUP;
GPIO_Initure.Speed = GPIO_SPEED_FAST;
GPIO_Initure.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(cDeviceRxPort, &GPIO_Initure);
GPIO_Initure.Pin = cDeviceTxPin;
HAL_GPIO_Init(cDeviceTxPort, &GPIO_Initure);
HAL_NVIC_EnableIRQ(USART1_IRQn);
HAL_NVIC_SetPriority(USART1_IRQn,0,1);
}
}
void USART1_IRQHandler(void)
{
u32 timeout=0;
u32 maxDelay = 0x1FFFF;
HAL_UART_IRQHandler(&UART1_Handler);
timeout=0;
while (HAL_UART_GetState(&UART1_Handler) != HAL_UART_STATE_READY)
{
timeout++;
if(timeout>maxDelay)
break;
}
timeout=0;
while(HAL_UART_Receive_IT(&UART1_Handler, (u8 *)gstvDevice.RxBuffer, RXBUFFERSIZE) != HAL_OK)
{
timeout++;
if(timeout>maxDelay)
break;
}
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
DeviceRxcIsr();
}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
DeviceTxcIsr();
}
}
数据发送函数用:HAL_UART_Transmit_IT();
发现每个数据间发送的时间大概30毫秒,
用HAL_UART_Transmit()这个函数是秒发,功能需要只能用这个HAL_UART_Transmit_IT()函数,请教下,这个时间要怎么修改,还是程序哪里出错了。
附串口发送,电脑接收时的数据。以下数据为SSCOM V5.13.1软件
[17:24:15.500]发→◇FC FD 80 04 03 01 02 03 87 □
[17:24:15.512]收←◆FC
[17:24:15.550]收←◆FD
[17:24:15.589]收←◆01
[17:24:15.628]收←◆20
[17:24:15.666]收←◆03
[17:24:15.704]收←◆01
[17:24:15.743]收←◆04
[17:24:15.782]收←◆00
[17:24:15.821]收←◆00
[17:24:15.860]收←◆00
[17:24:15.898]收←◆00
[17:24:15.936]收←◆02
[17:24:15.975]收←◆0F
[17:24:16.013]收←◆00
[17:24:16.052]收←◆00
[17:24:16.090]收←◆00
[17:24:16.129]收←◆00
[17:24:16.168]收←◆00
[17:24:16.206]收←◆00
[17:24:16.245]收←◆00
[17:24:16.284]收←◆00
[17:24:16.322]收←◆00
[17:24:16.361]收←◆00
[17:24:16.399]收←◆00
[17:24:16.438]收←◆00
[17:24:16.476]收←◆00
[17:24:16.516]收←◆00
[17:24:16.554]收←◆00
[17:24:16.592]收←◆03
[17:24:16.631]收←◆06
[17:24:16.669]收←◆00
[17:24:16.708]收←◆00
[17:24:16.747]收←◆00
[17:24:16.785]收←◆00
[17:24:16.824]收←◆00
[17:24:16.862]收←◆00
[17:24:16.901]收←◆2F
[17:24:16.980]收←◆FC FD 01 20 03 01 04 00 00 00 00 02 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 06 00 00 00 00 00 00 2F
|
|