STM32_HAL库学习(1)

1、如何在使用STM32CubeMX修改配置时不修改自己的文件?

首先使用keil或其他编辑工具打开工程,在使用CubeMX修改配置以后,生成Code时不要再打开工程,在刚开始打开的那个工程中会选择是否导入修改后的文件,对源文件和头文件都选择是,但工程文件选择否。OK

2、使用JLink或STLink下载的配置可能问题?

CubeMX默认配置过工程文件中有关下载的参数,在下载不成功时,要考虑是否是Debug内参数设置不对应,或者是CubeMX默认设置了下载接口软件配置。比如说,在使用CubeMX修改工程时,每次修改工程文件都会还原成默认下载工具,需要重复修改,因此不修改工程文件则不会出现这个现象。默认有时JLink使用5线制SW,就需要在CubeMX中修改为需要的接口类型。OK

3、延时函数?

想要使用systick做延时,在HAL库中可以直接调用__weak void HAL_Delay(__IO uint32_t Delay)。该函数基准为1ms,为弱函数,也可以用户重新编写。但满足基本需要。OK

4、使用DMA发送串口数据,如何判断数据是否发送完成?

快速发送数据时,前一串数据太长,还未发送完成,又将数据放到发送缓冲区,会导致数据过快覆盖。使用判忙,则可以判断是否发送完成。在字符串方式时,使用string.h库文件,字符串最后使用\0结尾是个不错的尝试。但使用memcpy更利于HEX处理。OK

 while(HAL_UART_STATE_BUSY_TX == (HAL_UART_GetState(&huart1) & HAL_UART_STATE_BUSY_TX));//发送前判忙
 memcpy(UART1_Txbuff, "12345\r\n", 7);
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)UART1_Txbuff, 7);

5、DMA接收数据,IDLE和DMA需要自己在配置?

在CubeMX中似乎没有找到如何直接配置这两个选项。在程序中要在自定义代码范围内写以下语句:

    __HAL_UART_CLEAR_IDLEFLAG(&huart1);                             //清除中断标志
    __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);          //使能IDLE中断
    HAL_UART_Receive_DMA(&huart1, UART1_Rxbuff, UART1_RX_MAX);

在串口初始化时添加,如果没有第一句,启动接收DMA后会接入一次中断。在接收中断中回调以下函数。

void UART_IDLE_Callback(UART_HandleTypeDef *huart)
{
  uint16_t tmp1;

    if(__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) != RESET)
  {
        __HAL_UART_CLEAR_IDLEFLAG(huart);//清除标志位
        HAL_UART_DMAStop(huart); //

        if(huart->Instance == USART1)
    {
      /* get rx data len */
            tmp1 = UART1_RX_MAX - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);// 获取DMA中传输的数据个数
            
            if(tmp1 != 0)
            {
                while(HAL_UART_STATE_BUSY_TX == (HAL_UART_GetState(&huart1) & HAL_UART_STATE_BUSY_TX));
                memcpy(UART1_Txbuff, UART1_Rxbuff, tmp1);
                HAL_UART_Transmit_DMA(&huart1, (uint8_t *)UART1_Txbuff, tmp1);
            }
            HAL_UART_Receive_DMA(&huart1, UART1_Rxbuff, UART1_RX_MAX);//打开DMA接收,数据存入rx_buffer数组中。    
    }
  }
}

OK

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F1_HAL使用手册文件是STM32F1系列单片机的编程接口及其应用程序的软件开发包。该手册具有非常详细的介绍和说明,包括HAL的功能、使用方法、配置及编译软件等多个方面。 首先,该手册详细讲解了STM32F1系列单片机的基本知识,如器件特性、体系结构和系统时钟等。其次,该手册介绍了HAL的结构、API(应用程序接口)函数,文件和数据类型,并通过代码示例来演示如何使用HAL进行应用程序的开发。此外,该手册还列出了各类功能实现的驱动函数。 在使用HAL进行开发时,手册中提供了充足的文献资料,可以帮助开发人员解决各种问题,例如在编写驱动程序时如何使用HAL中的定时计数器、串口转换器和DMA等。手册中还提供了各种应用示例,如PWM控制、定时器中断、SPI通讯和ADC采集等等,展示了HAL在各种应用场景下的使用方法。 最后,该手册中还包含了硬件抽象层标准的配置工具,如CubeMX和STM32工具箱,用于帮助开发人员更为快速地进行底层开发工作,降低了开发成本和时间成本。 综上所述,STM32F1系列单片机的HAL使用手册文件是非常重要的开发工具。它深入浅出地解释了HAL如何应用于STM32F1系列单片机开发。对于开发人员来说,熟练掌握该手册的内容,可以促进开发过程,提高开发效率。 ### 回答2: stm32f1_hal是ST公司提供的一种硬件抽象层的文件,支持对于STM32F1系列的微控制器进行控制并输出操作。这个编程文件非常适合初学者或者是想要快速地进行STM32F1系列微控制器开发的程序员,因为它提供一种抽象的、高级的、更易于理解的方式来写代码。同时,stm32f1_hal的使用手册文件非常重要,因为它是学习和使用stm32f1_hal的关键,提供了详细的操作指南和样例代码。 stm32f1_hal使用手册文件包含五个章节:的概述、的安装、的使用、的例子和中的附录。第一个章节介绍了stm32f1_hal的主要特性,这些特性包括高级的外设驱动、支持中斷实时和低功耗模式、易于使用和理解的API等等。 第二个章节讲解了如何在STM32F1系列微控制器中安装该,此处需要注意的是不同的开发环境安装该的方法可能不同。 第三个章节是重点所在,讲解了常见的API及其使用方法,例如初始化外设、读取和写入数据。此处需要注意的是,代码中所调用的API需要根据不同的外设进行调整。 第四个章节列出了一些常见的例子,展示了如何使用stm32f1_hal来实现不同的功能,例如LED、串口通信、时钟控制等等。 最后一个章节中提供了附录中的内容,为在实际开发中对API的使用提供支持。总之,stm32f1_hal使用手册文件是使用STM32F1微控制器开发的重要参考书,值得认真参考。 ### 回答3: stm32f1_halSTM32F1系列的外设驱动。使用手册文件提供了完整的、详细的说明,包含了使用方法、函数及其参数的解释、编程范例等,是程序员使用stm32f1_hal的重要参考资料。 手册文件主要介绍了STM32F1系列芯片的存储器、时钟、GPIO、中断、USART、SPI、I2C、DMA、ADC、DAC等各种外设的使用方法。通过手册,用户可以了解到如何对寄存器进行初始化,使外设工作正常。手册还提供了各种编程范例,程序员可以根据自己的需求进行调整和优化,大大提高了开发效率。 需要特别提醒的一点是,由于HAL是由ST官方提供的驱动,所以不同芯片的HAL会有一些差别,用户在选择芯片型号后,务必下载对应的版本的手册。另外,由于HAL是基于底层的封装,对于一些特殊的需求,或者需要更高的性能的场合,程序员也可以直接使用底层进行编程。 总之,stm32f1_hal使用手册文件是STM32F1系列的外设驱动的重要参考资料。对于初学者来说,掌握使用手册,能够快速地编写STM32F1的应用程序;对于有经验的开发者,可以通过更深入的阅读和理解手册,更好地优化应用程序,提高应用程序的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值