新做一个变量
gkbaseusart.c GK_USARTIDLE_TYPE GKU2;
绑定:
uint8_t GK_usart_init(GK_USARTIDLE_TYPE *myuart,uint8_t usartid)
{
switch(usartid)//绑定关系
{
case 1:myuart->huart=&huart1;break;
case 2:myuart->huart=&huart2;break;
//case 3:myuart->huart=&huart3;break;
default :return 0;
}
HAL_UART_Receive_DMA(myuart->huart, myuart->rxBuf, RECEIVELEN);//确定DMA搬运收货地址
__HAL_UART_ENABLE_IT(myuart->huart, UART_IT_IDLE);//开启空闲中断
__HAL_UART_CLEAR_IDLEFLAG(myuart->huart);//优化代码:马上清除一次 防止第一次误报
return 1;
}
在main调用一下。
此后基本搞定了 已经做好了自动接收的全部设置了。开始通讯吧。
++++++++++++++
it一个天大的事情
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
GK_UsartReceive_IDLE(&GKU2);
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}
+++++++++++++
为了测试方便 我们把rtos中
///* USER CODE END Header_StartTask03 */
//void StartTask03(void const * argument)
//{
// /* USER CODE BEGIN StartTask03 */
// /* Infinite loop */
// for(;;)
// {
//
// osDelay(100);
// }
// /* USER CODE END StartTask03 */
//}
全部del
然后搬运到APP中 在.C复制上面代码就好 冠以#include "FreeRTOS.h"即可
这样就分离了 方便我们测试
我们的框架是:
void StartTask03(void const * argument)
{
esp12s_init();
for(;;)
{
switch(wifiRun)
{
case WIFI_INIT:
{
esp12s_start_init();
}break;
case WIFI_RECEIVE:
{
wifi_module_receive();
}break;
default:printf("wifi run no this handle = %d\n" , wifiRun); wifiRun = WIFI_INIT; break;
}
osDelay(100);
}
}