STM32Y与openmv进行串口通讯其中stm32端使用中段接收函数并且由usart1实现的hal库代码
时间: 2024-05-15 14:13:36 浏览: 90
stm32与openmv串口通信.rar
5星 · 资源好评率100%
以下是使用HAL库在STM32端实现USART1串口通信的示例代码:
首先需要在CubeMX中配置USART1的GPIO和USART参数,然后生成代码,在main函数中添加如下代码:
```c
/* USART1 init function */
static void MX_USART1_UART_Init(void)
{
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;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
}
int main(void)
{
/* 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_USART1_UART_Init();
/* USER CODE BEGIN 2 */
uint8_t data[10] = "Hello!\r\n";
HAL_UART_Transmit(&huart1, data, sizeof(data), HAL_MAX_DELAY);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
```
在以上代码中,我们使用了`HAL_UART_Init()`函数初始化USART1,并且使用`HAL_UART_Transmit()`函数发送了一个字符串“Hello!”到PC机上。
接下来,我们需要在STM32与OpenMV之间进行串口通信。在OpenMV的脚本中,我们可以使用`uart.write()`函数向STM32发送数据,并使用`uart.read()`函数从STM32接收数据。以下是一个简单的例子:
```python
import time
import pyb
uart = pyb.UART(3, 115200)
while(True):
uart.write("Hello from OpenMV!\r\n")
time.sleep(1)
if uart.any():
data = uart.read()
print(data)
```
以上代码中,我们使用`pyb.UART()`函数初始化UART3,并且循环发送字符串“Hello from OpenMV!”到STM32。在每次发送后,我们使用`uart.any()`函数检查是否有数据从STM32接收过来,并使用`uart.read()`函数读取接收到的数据,并打印输出。
阅读全文