STM32
直播中

一瞅一个准

12年用户 835经验值
私信 关注
[问答]

STM32的串口发送数据知识点汇总,错过绝对后悔

STM32的串口发送数据知识点汇总,错过绝对后悔

回帖(1)

王燕

2021-12-16 11:49:27
1.1、初始化要调用的串口的相关参数 :

  • Instance     要调用的串口的淳口寄存器的基地址。
  • BaudRate        波特率
  • StopBits     的停止位
  • WordLength    字节的长度
  • HwFlowCtl       硬件流,一般情况下,设置无、
  • Mode               设置串口是发送还是接收数据,或者是发送,接收同时进行的。
  • Parity               设置串口的奇偶校验位
以上这些串口的参数都是放在UART_HandleTypeDef这个结构体中,所以,需要定义一个UART_HandleTypeDef的变量。UART_HandleTypeDef  usart1_handler

1.2使能要调用的串口,HAL_UART_Init()这个函数的入口参数是UART_HandleTypeDef的一个指针变量,所以,调用这个函数的时候,直接HAL_UART_Init(&usart1_handler)就可以了。

为了不再main中进行初始化,可以自己定义一个函数进行初始化就可以了。
void usart1_init()
//需要对串口初始化的相关参数,和串口的使能开启。
void usart1_init(){//需要对串口初始化的相关参数,和串口的使能开启。}

到时候在main函数中调用即可。’

int main(){    usart1_init();    //这样调用的话,在看主函数的时候,就会很精简。}

2.1串口分位,RX,TX,最终需要接到IO口的引脚上,所以,需要对相关的IO脚进行配置,还有复用配置
相关函数是HAL_UART_MspInit  ,这是一个虚函数,需要重新定义。然而,对IO脚配置的函数是在HAL_GPIO_Init()函数中的、
 
void HAL_UART_MspInit(UART_HandleTypeDef *huart){
   GPIO_InitTypeDef GPIO_Initure;                             //  HAL_GPIO_Init  进行调用即可
                         // HAL_UART_MspInit这个函数是要被HAL_UART_Init进行调用的

    
     }

 3.1发送数据,并等待数据的发送完成
int main(void){    u8 rdates[]="125488xaaaff123";   //这个是要发送的内容    HAL_Init();    Stm32_Clock_Init(360,25,2,8);    delay_init(180);             //这个延时函数的初始化没有配置的话,主函数及时有延时函数也是没有任何作用的,所以,洗浴是要配置的    usart1_init();    while(1)    {        HAL_UART_Transmit(&usart1_handler,rdates,sizeof(rdates),1000);        delay_ms(1000);         }}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分