用cubemx配置串口1与serialplot通信
时间: 2023-12-01 11:04:23 浏览: 164
SerialPlot是一款串口绘图工具,可以将串口接收到的数据进行实时绘图。下面是使用Cubemx配置串口1与SerialPlot通信的步骤:
1. 打开Cubemx,新建工程,并选择对应的芯片型号。
2. 在Pinout选项卡中,选择串口1对应的引脚,将其配置为GPIO推挽输出模式。
3. 在Configuration选项卡中,选择USART1,并进行如下配置:
- Mode:选择Asynchronous。
- Baud Rate:设置波特率,例如115200。
- Word Length:选择8 Bits。
- Stop Bits:选择1 Bit。
- Parity:选择None。
4. 在NVIC Settings选项卡中,使能USART1的中断,并设置优先级。
5. 在Code Generator选项卡中,勾选Generate peripheral initialization as a pair of '.c/.h' files,并点击Generate Code按钮生成代码。
6. 在主函数中添加如下代码:
```c
int main(void)
{
/* USER CODE BEGIN 1 */
char buffer[32];
uint16_t adc_value;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_ADC_Init();
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
HAL_ADC_Start(&hadc);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(HAL_ADC_PollForConversion(&hadc, 1000) == HAL_OK)
{
adc_value = HAL_ADC_GetValue(&hadc);
snprintf(buffer, sizeof(buffer), "%d\n", adc_value);
HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), 1000);
}
HAL_Delay(50);
}
/* USER CODE END 3 */
}
```
在该代码中,我们使用ADC采集模拟量并通过串口1将其发送给SerialPlot进行绘图。其中,我们使用了sprintf函数将采集到的数据转换为字符串格式,并使用HAL_UART_Transmit函数将其发送到串口1。
7. 打开SerialPlot,点击Connect按钮,选择串口1对应的波特率和数据位数,即可开始接收数据并进行实时绘图。
需要注意的是,在使用SerialPlot绘图时,需要将发送的数据格式设置为纯数字格式(如"123"),以便SerialPlot正常解析数据进行绘图。
阅读全文