一、HAL结构
HAL的作用是将基础的寄存器读写操作抽象掉,使程序员只需要关心对芯片模块的行为级操作。stm32的cube包以类似面向对象的思想来进行设计,每一个芯片模块都被抽象成一个类,它的私有成员用以辅助算法的实现,公有成员被用作一个方法供外部调用。
我开发板的芯片型号是stm32f10x系列,基础的芯片结构如下:
这时官网上下载的cube包里hal内容:
对比之后发现几乎所有的模块都已经被包含进HAL层。
二、HAL的初始化
HAL层被调用前要先运行初始化函数HAL_init(),它包含在针对HAL自身的全局操作操作的源文件hal.c里。
HAL全局结构
由于Hal_init函数不长,就直接上原型了:
HAL_StatusTypeDef HAL_Init(void)
{
/* Configure Flash prefetch */
#if (PREFETCH_ENABLE != 0)
#if defined(STM32F101x6) || defined(STM32F101xB) || defined(STM32F101xE) || defined(STM32F101xG) || \
defined(STM32F102x6) || defined(STM32F102xB) || \
defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \
defined(STM32F105xC) || defined(STM32F107xC)
/* Prefetch buffer is not available on value line devices */
__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
#endif
#endif /* PREFETCH_ENABLE */
/* Set Interrupt Group Priority */
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
/* Use systick as time base source and configure 1ms tick (default clock after Reset is MSI) */
HAL_InitTick(TICK_INT_PRIORITY);
/* Init the low level hardware */
HAL_MspInit();
/* Return function status */
return HAL_OK;
}
首先打开flash预取缓存加快flash的读取,接下来的工作主要是初始化一个time base。用 systick定时器产生一个1ms为周期的中断,这个中断主要被用于OS产生时钟节拍,为内核提供运行环境。每一次此中断发生时,HAL定义的uwTick计数器将被加一。这样,许多外设的延时都可以通过调用GetTick()函数定时读取这个变量的值来实现。
HAL_Init不仅初始化了定时器的溢出时间,而且将定时器中断指定了相应的优先级。
HAL_MspInit()和HAL_MspDeInit()是用户函数,原型是空函数。
三、其他HAL全局操作
HAL_DeInit()函数通过写复位寄存器,将所有模块复位。
Tick
HAL_IncTick(),用于将uwTick加一。
HAL_Delay(),利用查询uwTick的值来进行延时。
HAL_SuspendTick()和HAL_ResumeTick()用于挂起和恢复定时器中断,这在进行一些需要中断屏蔽的操作时(临界段代码),很有用。
Mode
为了降低功耗,在CPU不运行时,可以将芯片设置位sleep、stop或者standby模式。
而在CPU运行时,也可以通过关闭外设的时钟来降低功耗。
HAL.c里提供相应和函数和宏来支持这两项操作。
上一篇:stm32.cube(三)——HAL.GPIO
下一篇:stm32.cube(一)——系统架构及目录结构
推荐阅读最新更新时间:2024-03-16 16:01
设计资源 培训 开发板 精华推荐
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升
- 宁德时代发布10月战报
- 2024年10月电池行业:增长势头不减!