新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2017-1-5
- 在线时间
- 50 小时
|
6金钱
这是个用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] |
最佳答案
查看完整内容[请看2#楼]
谢谢上面那个轮询的问题解决了,主要还是刚接触串口 ,很多不懂,HAL库的函数手册讲得不是很详细,只有写上去下载看效果,现在又遇到一个问题,中断函数进不去 。请师兄推荐一本讲单片机原理的书,现在要弄好几块单片机,stm32f1,stm32f7,和msp432,刚接触后面两种,而且是刚出来的,新手研究起来感觉老火
|