zoukankan      html  css  js  c++  java
  • RTT使用问题总结

    1 ENV下不用将stm32fnxx_hal_msp.c拷贝到RTT工程文件夹下(也不用调用其中的片上外设函数如void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi),听说KCONFIG自己会调用;studio下根据文档说是需要;

     stm32_spi_init-》HAL_SPI_Init-》 HAL_SPI_MspInit(hspi)-》在stm32f4xx_hal_spi.c中弱定义,所以需要将cubumx生成的 HAL_SPI_MspInit拷贝到board.c下

    2 关于SPI配置,当设定最大速率后最终发现时钟频率降低2倍的原因,是因为RTT获取时钟源函数stm32_spi_init下的  SPI_APB_CLOCK不正确,没有正确反映外设挂在哪个总线下面;解决方法有2种:

    • 方法1 :将struct rt_spi_configuration cfg 的cfg.max_hz*2并做好备注声明(适合共享给其它人应用的软件包);
    • 方法2:将下面的通过宏定义修改正确,从而获得正确的参数时钟(分频值),这种方法适合代码自用(因为别人不一定用该SPI,且时钟源也不一定相同(不同系列的STM32));

    #if defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0)
        SPI_APB_CLOCK = HAL_RCC_GetPCLK1Freq();
    #else
        SPI_APB_CLOCK = HAL_RCC_GetPCLK2Freq();
    #endif

    3 外设的使用一定要注意打开board.h进行类似以下的声明

    #define BSP_USING_UART1
    #define BSP_UART1_TX_PIN       "PA9"
    #define BSP_UART1_RX_PIN       "PA10"

     4 自己写的驱动老是说找不到头文件,尽管路径已经设置好了,原因时下面的宏没有打开

    #define PKG_USING_ADE7913
    #ifdef PKG_USING_ADE7913

     5 studio下从HSI到HSE,将cubmx生成的SystemClock_Config 替换 drv_clk.c中的system_clock_config(target_freq)并将该函数的源代码屏蔽;同时在  STM32F4xx_HAL_CONF.H中修改HSE的值

    void clk_init(char *clk_source, int source_freq, int target_freq)
    {
        //system_clock_config(target_freq);
        SystemClock_Config();
    }

     6 studio下SPI的使用,按照board.h中所说即可,不用显示调用HAL_SPI_MspInit(&hspix),有的地方自会调用

  • 相关阅读:
    蒟蒻的填坑计划
    现在的状态....
    date modify
    set source
    image source
    simple auth
    net
    bridge
    iptable
    namespace
  • 原文地址:https://www.cnblogs.com/jieruishu/p/12857950.html
Copyright © 2011-2022 走看看