打印

HAL库源文件stm32h7xx_hal_cortex.c学习笔记(2018-07-20 V1.0)

[复制链接]
172|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小小的人呀|  楼主 | 2018-8-10 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说明
1、这个库文件主要功能是NVIC,MPU和Systick的配置。
2、这个驱动文件有个臃肿的地方,就是HAL库将ARM的CMSIS库各种API函数封装了一遍。其实就是为了换个名字,保证HAL的API都是以HAL开头的。

==============================================================================
                                                                   ##### 如何使用此驱动  #####
==============================================================================
1 、使用CORTEX HAL的API配置NVIC
(1)通过函数HAL_NVIC_SetPriorityGrouping设置NVIC优先级分组。
(2)通过函数HAL_NVIC_SetPriority设置中断的优先级。
(3)通过函数HAL_NVIC_EnableIRQ使能中断。
(4)系统上电默认是NVIC_PRIORITYGROUP_0,只有子优先级,没有抢占优先级。
        a、抢占优先级数值越小,优先级越高
        b、子优先级数值越小,同抢占优先级时,优先级越高。
        c、同子优先级和和抢占优先级时,中断向量表中序号小的,在中断同时到来时,优先级执行。

       NVIC详细介绍可以看此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=21094   
      

2、使用CORTEX HAL的API配置滴答定时器Systick
(1)函数HAL_SYSTICK_Config调用CMSIS库函数SysTick_Config配置滴答定时器
        a、配置重装寄存器。
        b、配置滴答定时器的优先级为最低0x0F。
        c、复位滴答定时器计数器。
        d、选择滴答定时器时钟源HCLK。
        e、使能滴答定时器中断。
        f、使能滴答定时器计数。

(2)滴答定时器的时钟源可以选择HCLK的8分频,方法是用户调用了函数HAL_SYSTICK_Config()再调用HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8)。
        函数HAL_SYSTICK_CLKSourceConfig是在文件stm32h7xx_hal_cortex.h里面定义。

(3)如果大家不使用滴答定时器默认的最低优先级,可以调用了函数HAL_SYSTICK_Config()后,再调用HAL_NVIC_SetPriority(SysTick_IRQn, X, X)进行修改。

(4)HAL_SYSTICK_Config() 函数的形参表示内核时钟多少个周期后触发一次Systick定时中断.
                    -- SystemCoreClock / 1000  表示定时频率为 1000Hz, 也就是定时周期为  1ms
                    -- SystemCoreClock / 500   表示定时频率为 500Hz,  也就是定时周期为  2ms
                    -- SystemCoreClock / 2000  表示定时频率为 2000Hz, 也就是定时周期为  500us



3、此文件里面还有一个重要的函数就是系统复位:HAL_NVIC_SystemReset

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

399

主题

399

帖子

0

粉丝