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),有的地方自会调用

  • 相关阅读:
    system函数调用
    ubuntu设置开机默认进入界面及命令行下开启图像界面
    博客园添加目录
    [转]JavaScript自动生成博文目录导航
    博客选择: csdn博客和博客园(cnblog)
    [转]Git服务器的搭建全部功略
    Ubuntu忘记密码
    [转]android logo:内核、android开机动画
    [转]关于前置声明与C++中头文件相互包含的几点问题
    [转]while(cin>>str)输入结束符,并正确执行后续程序
  • 原文地址:https://www.cnblogs.com/jieruishu/p/12857950.html
Copyright © 2011-2022 走看看