查看: 1137|回复: 0

从STM32CubeF0驱动包开始你的项目

[复制链接]
  • TA的每日心情
    慵懒
    2016-11-22 11:58
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2014-12-15 22:48:19 | 显示全部楼层 |阅读模式
    分享到:
    在使用STM32CubeMX时会下载一个驱动包,那个包里有很多相应的例程,对自己的项目开始有很大的帮助,但是直接修改例程尤其是添加新的外设会出现外设不能运行的情况,这是因为新加外设的初始化程序没有在main.c中,而是在stm32f0xxx_hal_msp.c文件中。下面将完整的说一说如何开始自己的项目。
    第一步,创建你的工程:工程可以直接使用包里提供的模板(Templates)工程,也可以从提供的例程中创建。模板工程初始化了如下特性:
    --包含最小化的HAL、CMSIS、BSP驱动库
    --包含所有驱动库的头文件
    --define 了支持的STM32F0设备,因此可以相应的配置CMSIS和HAL驱动
    --提供了用户直接可以使用的功能,如下:
       HAL初始化了ARM内核SysTick默认时基单元
       延时函数HAL_Delay()需要使用的SysTick中断
       系统时钟使用HSI配置的最小频率
    注意:当你复制一个已存在的工程到别的地方时,要确保更新了头文件路径
    第二步,添加所需的中间层模块到你的工程中:
    需添加相应中间层的哪些文件,需要参考各个中间层提供的文档。你也可以从applications文件夹中参考需要添加哪些文件。
    第三步,配置固件库:
    HAL和中间层的使用需要修改一系列的宏。在模板工程中,这些宏一般在xxx_conf_template.h中,按需要更改。
    第四步,开始HAL库:
    在进入main函数之后,应用程序会调用HAL_Init()API来初始化HAL库,这个函数完成以下任务:
    a) 配置FLASH的预取值和SysTick中断优先级(用户可通过stm32f0xx_hal_conf.h中的宏来修改)
    b) 配置SysTick产生1ms周期的中断,它的时钟使用的HSI(在这个阶段,时钟还没有配置,因此系统使用内部的8MHz HSI)
    c) 调用定义在stm32f0xx_hal_msp.c中的HAL_MspInit()回调函数,初始化底层的硬件
    第五步,配置系统始终:
    系统时钟的配置使用下面两个API :
    a) HAL_RCC_OscConfig():其配置系统使用内部和/或外部晶振,也包括PLL源。用户能够配置一个或者全部晶振。如果不需要PLL可以跳过其配置。
    b) HAL_RCC_ClockConfig():配置系统时钟源,FLASH内存延迟和AHB与APB的分频。


    第六步,外设初始化:
    a) 开始编写外设的HAL_PPP_MspInit函数,步骤如下:
    --使能外设时钟
    --配置外设GPIO
    --配置DMA通道和使能DMA中断(如果需要)
    --使能外设中断(如果需要)
    b) 编辑stm32xxx_it.c文件,以调用需要的中断句柄
    c) 编写进程完成的回调函数,如果需要使用外设的中断或者DMA时
    d) 在main.c 文件中,初始化外设句柄结构体,然后调用初始化函数
    第七步,编写自己的应用进程
    注意:若需在中断中使用HAL_Delay()函数,一定要确保SysTick中断的优先级最高
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 14:32 , Processed in 0.119430 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.