当前位置:   article > 正文

HT32笔记3-UART&USART(2022/2/20)_ht32硬件spi

ht32硬件spi

HT-UART库使用

1.硬件连接

  • 如下图

​ 所以,如果我们要使用上端的PA4,PA5去连接MCU的串口USART1的话,我们需要将跳线帽短接到右边

2.如果要使用c的标准库进行串口输入输出

需要将串口进行重定义到c的标准输入输出函数上,

在ht32f5xxxx_conf.h重修改宏定义即可:(可使用keil自带的文件向导打开,如下图:)

如上图:以USART1当做标准输入输出的串口(即可以使用printf直接进行输出)

有一点值得注意的是,使用重定义后的串口,可以直接在elink上输出串口信息,相当方便

3.串口的初始化配置及使用

与stm32配置时极其相似;无非就是使能时钟,配置串口初始化结构体,使能串口,如果需要的话,还需要使能中断及配置中断。

  • 使能时钟;

    	CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
    	
    	USART0_CKCU_COF(CKCUClock) = 1; //串口时钟
    	CKCUClock.Bit.USART0   = 1; //串口时钟
        CKCUClock.Bit.AFIO     = 1;//端口复用时钟
        CKCU_PeripClockConfig(CKCUClock, ENABLE);//使能时钟
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 将RX设置为输入上拉模式:

    	GPIO_PullResistorConfig(GPIOPORT_USART0,GPIOPIN_USART0_RX, GPIO_PR_UP);
    
    • 1
  • 引脚复用(合泰几乎所有的引脚在使用时都需重映射,虽然有默认的功能,但建议使能复用,并将其确认清楚为好):

    	AFIO_GPxConfig(AFIOPORT_USART0, AFIOPIN_USART0_TX, AFIO_FUN_USART_UART); //PA4 复用 TX 串口
        AFIO_GPxConfig(AFIOPORT_USART0, AFIOPIN_USART0_RX, AFIO_FUN_USART_UART); //PA5 复用 RX 串口
    
    • 1
    • 2
  • 配置初始化结构体

        USART_InitStructure.USART_BaudRate = BaudRate; //波特率
        USART_InitStructure.USART_WordLength = USART_WORDLENGTH_8B; //位长8位
        USART_InitStructure.USART_StopBits = USART_STOPBITS_1; //停止位1位
        USART_InitStructure.USART_Parity = USART_PARITY_NO; //不使用
        USART_InitStructure.USART_Mode = USART_MODE_NORMAL; //普通串口
        USART_Init(HT_USART0, &USART_InitStructure); //串口1初始化
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 使能中断(要使用中断的话)

    	NVIC_EnableIRQ(USART0_IRQn);//串口中断级使能
    	USART_IntConfig( HT_USART0, USART_INT_RXDR , ENABLE); 
    
    • 1
    • 2
  • 串口使能

        USART_TxCmd(HT_USART0, ENABLE); //串口0Tx使能
        USART_RxCmd(HT_USART0, ENABLE);	//串口0Rx使能
    
    • 1
    • 2
  • 关于串口中断的一些tips:

    通常情况下,我们只使能接收中断,而不用发送中断,

    因为当数据来时,我们通常不会马上进行处理,而是等待接收完成才进行处理,所以此时使用中断,可以使cpu在这段时间内去干其他事情;

    而发送时,我们通常只有等发送完成才会去干其他事情,而且通常一次发送的数据量不会太大,也没有使用中断的必要。在使用发送中断时注意,我们只有在要发送时才开启中断,发送结束时必须关闭中断,否则,单片机检测到发送缓冲区为空(表明现在能发送)就会进入中断。如果我们一直将发送中断开启的话,我们没有发送/发送已经完成时,发送缓冲就是空的,此时就会不断进入中断中,从而对单片机的运行产生

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/565949
推荐阅读
相关标签
  

闽ICP备14008679号