1092|2

6107

帖子

4

TA的资源

版主

楼主
 

【STM32WBA52CG】+4 外设应用二 串口使用 [复制链接]

本帖最后由 damiaa 于 2023-8-7 09:37 编辑

STM32WBA52CG】+4 STM32WBA 外设应用 按键和点灯

【NUCLEO-WBA52CG】+1开箱贴

STM32WBA52CG】+2 STM32WBA Web Bluetooth试玩

STM32WBA52CG】+3 STM32WBA 外设应用 按键和点灯 之后继续

板子有个串口连接到了stlinkv3

板子资料里面显示是:PA8 (VCP1_RX)PB12(VCP1_TX)

修改串口配置:

主程序中前面加入

/* USER CODE BEGIN PV */
uint8_t rx1_buff[1];
#define R1XB_MAX 100
uint8_t rx1_b[R1XB_MAX];
uint8_t rx1_b_index=0;
/* USER CODE END PV */

MX_USART1_UART_Init()初始化中最后加入

HAL_UART_Receive_IT(&huart1, (uint8_t *)rx1_buff, 1);

static void MX_USART1_UART_Init(void)
{
   /* USER CODE BEGIN USART1_Init 0 */
   /* USER CODE END USART1_Init 0 */
   /* USER CODE BEGIN USART1_Init 1 */
   /* USER CODE END USART1_Init 1 */
   huart1.Instance = USART1;
   huart1.Init.BaudRate = 115200;
   huart1.Init.WordLength = UART_WORDLENGTH_8B;
   huart1.Init.StopBits = UART_STOPBITS_1;
   huart1.Init.Parity = UART_PARITY_NONE;
   huart1.Init.Mode = UART_MODE_TX_RX;
   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
   huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
   huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
   huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
   if (HAL_UART_Init(&huart1) != HAL_OK){
      Error_Handler();
   }
   if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK){
      Error_Handler();
   }
   if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK){
      Error_Handler();
   }
   if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK){
      Error_Handler();
   }
   /* USER CODE BEGIN USART1_Init 2 */
   HAL_UART_Receive_IT(&huart1, (uint8_t *)rx1_buff, 1);//记得加入这句
   /* USER CODE END USART1_Init 2 */
}

给板子加入串口回调函数和led显示函数

void setled(char ld1,char ld2,char ld3){
   if(ld1==0)
      HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_RESET);
   else
      HAL_GPIO_WritePin(GPIOB, LD1_Pin, GPIO_PIN_SET);
   if(ld2==0)
      HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
   else
      HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
   if(ld3 ==0)
      HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET);
   else
      HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
   UNUSED(huart);
   if(huart->Instance == USART1){
      rx1_b[rx1_b_index++] =rx1_buff[0];
      rx1_b_index =rx1_b_index%R1XB_MAX;
      if(rx1_buff[0] ==0x0d)
      {
         //set 1 0 0 //10
         if((rx1_b[0] == 's')&&(rx1_b[1] == 'e')&&(rx1_b[2] == 't')&&(rx1_b[3] == ' ')&& (rx1_b_index >=10 )){
                setled(rx1_b[4]-0x30,rx1_b[6]-0x30,rx1_b[8]-0x30);
                rx1_b_index =0;
                HAL_UART_Transmit_IT(&huart1, rx1_b, 10);
            }
      }
      HAL_UART_Receive_IT(huart, rx1_buff, 1); //You need to toggle a breakpoint on this line!
   }
}
/* USER CODE END 0 */

主程序中就加个循环延时

/* USER CODE BEGIN WHILE */
while (1){
   HAL_Delay(100);
}
/* USER CODE END WHILE */
...

串口自动发送命令:发送命令 回复命令显示 led闪烁

57c3fbb5a3f350f99971e5eae334c616

 

谢谢

此帖出自无线连接论坛

最新回复

继续跟着楼主学习4 外设应用二 串口使用,收藏   详情 回复 发表于 2023-8-8 07:45
点赞 关注
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

继续跟着楼主学习4 外设应用二 串口使用,收藏

此帖出自无线连接论坛

点评

感谢支持!  详情 回复 发表于 2023-8-8 09:44
 
 

回复

6107

帖子

4

TA的资源

版主

板凳
 
Jacktang 发表于 2023-8-8 07:45 继续跟着楼主学习4 外设应用二 串口使用,收藏

感谢支持!

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表