赞
踩
rcc设置为外部时钟High Speed Clock (HSE)//设置为如图
再将其设置为72MHz
设置波特率范围提示点击波特率再点击图中的
我的设置
即可生成代码//省略项目设置
函数
HAL_UART_Transmit() - 发送数据到串口。
HAL_UART_Receive() - 从串口接收数据。
解释
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
huart
: 指向 UART_HandleTypeDef
结构的指针,该结构包含了 UART 的配置信息。pData
: 指向要发送的数据缓冲区的指针。Size
: 要发送的数据的字节数。Timeout
: 发送操作的超时时间(以毫秒为单位)。如果设置为 HAL_MAX_DELAY
,则表示无限期等待。HAL_OK
表示成功,HAL_ERROR
表示错误,HAL_BUSY
表示忙,HAL_TIMEOUT
表示超时)。HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
huart
: 指向 UART_HandleTypeDef
结构的指针,该结构包含了 UART 的配置信息。pData
: 指向用于接收数据的缓冲区的指针。Size
: 要接收的数据的字节数。Timeout
: 接收操作的超时时间(以毫秒为单位)。如果设置为 HAL_MAX_DELAY
,则表示无限期等待。HAL_OK
表示成功,HAL_ERROR
表示错误,HAL_BUSY
表示忙,HAL_TIMEOUT
表示超时)。这些函数在发送或接收数据时会阻塞,直到操作完成或发生超时。因此,在调用这些函数时,应该确保 UART 已经正确初始化,并且 pData
和 Size
参数指定了正确的数据缓冲区和大小。超时参数 Timeout
可以用来避免在通信问题导致数据无法发送或接收时无限期地等待。
当您使用 HAL_UART_Transmit()
和 HAL_UART_Receive()
函数时,您不需要手动检测是否有数据写入或读取,因为这些函数会自动处理数据的发送和接收。
- #include "stm32f1xx_hal.h"
-
- UART_HandleTypeDef huart; // 假设这是您的UART句柄
-
- int main(void)
- {
- HAL_Init(); // 初始化HAL库
- SystemClock_Config(); // 配置系统时钟
- MX_USART2_UART_Init(); // 初始化UART
-
- uint8_t txData[] = "Hello, World!"; // 要发送的数据
- uint16_t size = sizeof(txData) - 1; // 发送数据的大小(减1是为了排除字符串末尾的'\0')
-
- // 发送数据
- if (HAL_UART_Transmit(&huart, txData, size, HAL_MAX_DELAY) != HAL_OK)
- {
- // 发送失败的处理
- Error_Handler();
- }
-
- // ... 其他代码 ...
-
- while (1)
- {
- // 主循环
- }
- }
- #include "stm32f1xx_hal.h"
-
- UART_HandleTypeDef huart; // 假设这是您的UART句柄
-
- int main(void)
- {
- HAL_Init(); // 初始化HAL库
- SystemClock_Config(); // 配置系统时钟
- MX_USART2_UART_Init(); // 初始化UART
-
- uint8_t rxData[32]; // 接收数据的缓冲区
- uint16_t size = sizeof(rxData); // 接收缓冲区的大小
-
- // 接收数据
- if (HAL_UART_Receive(&huart, rxData, size, 5000) != HAL_OK)
- {
- // 接收失败的处理
- Error_Handler();
- }
-
- // 处理接收到的数据
- // ...
-
- while (1)
- {
- // 主循环
- }
- }
stm32设置
里面的时钟值为stm32最终输出的值下图的值
串口图
串口设置
HAL_UART_Transmit() - 发送数据到串口。
HAL_UART_Receive() - 从串口接收数据。
此函数会一直消耗系统内核资源,处于一直检测状态
使用sizeof();计算数组个数
调用的数组为指针类型//改变类型时记得转换
Proteus 8的stm32的时钟源为最终分频倍频之后的频率
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。