【项目分享】stm32节拍定时器开发(二)

 2024-03-01 01:06:18  阅读 0

上一篇文章讲了tick定时器位于内核中的什么位置。 本文讲的是tick定时器结构体和地址之间的联系。 不知道大家在搜索tick定时器地址的时候有没有注意到。 这是定义

# (( *) ) 这个东西第一次还是有点迷惑(初学者强烈推荐一本入门书《C 与指针》(*^__^*))。 这句话是什么意思呢? 通俗地说,它被定义为一个指向结构体的指针,而这个指针的地址是一个固定值,也就是上一篇文章中写的。 这个结构是什么? 您还可以在内核文件中找到它{ __IO CTRL; __IO 负载; __IO 值; 校准; };

stm32滴答时钟程序库函数版本_dll时钟_时钟函数代码

该结构体的这四个成员是不是很眼熟? 如果你读过数据表,或者在STM32项目中初始化过tick定时器,你就会知道它们是什么。

时钟函数代码_dll时钟_stm32滴答时钟程序库函数版本

首先阅读内核数据手册,找到tick定时器的几个寄存器,如下

再看tick定时器的初始化函数,->LOAD=(ticks & Msk) - 1; -> 值 = 0; ->CTRL=| _问号 | 询问;

你发现它们一一对应了吗? 结构体中的成员为32位,32位数据为4个8位,1个地址存储8位。 如果结构体成员是同一类型的数据,则结构体成员的地址是连续的。 这就合理地解释了这四个寄存器地址与库函数中结构体的对应关系。 虽然这里以tick定时器为例,但是学习stm32的过程总是这样的,从而将硬件寄存器与库函数中的结构体关联起来。 这个方法可以帮助大家了解一点关于通过寄存器进行写入的知识。 加深对图书馆功能的理解。

标签: 定时 滴答 结构

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码