这是个用UART+RS485通信的程序 下面是main()函数
遇到问题是下载代码后立即向串口发送数据它能收到,后面再发就收不到,调了多次超时参数也加过while(HAL_GetState(&huart7)==RESET); 不大清楚这两个函数,只能加进去看看效果 ,刚接触F7,请指点迷津!谢谢!
[mw_shl_code=applescript,true]int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_UART7_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
while(HAL_UART_GetState(&huart7) == RESET );
HAL_UART_Receive(&huart7,aRxBuffer,5,5000); //发送5个字符 aRxBuffer 和 aTxBuffer 数组长度分别是6和64
uint16_t i;
for(i=0;i<5;i++)
{
aTxBuffer=aRxBuffer; //收到的数据填充到发送数组
}
HAL_Delay(1000);
while(HAL_UART_GetState(&huart7) == RESET );
HAL_GPIO_WritePin(GPIOE,DE_Pin, GPIO_PIN_SET); //使能485发送
HAL_UART_Transmit(&huart7,aTxBuffer,5,100);
HAL_GPIO_WritePin(GPIOE,DE_Pin, GPIO_PIN_RESET); //
/* USER CODE END WHILE */
}
/* USER CODE END 3 */
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不了解程序里state的具体定义,这是要查手册的。
烦烦说下关键:
理解串口通信的物理过程,
发送一个字节后线路是什么状态,怎么样随时间变化,变化到什么程度会引起什么动作、事件,CPU是什么状态,
然后根据物理过程来编写时序。
一周热门 更多>