历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2018年10月16日 | stm32之滴答定时器(2):滴答定时器地址与stm32结构体

2018-10-16 来源:eefocus

    上一篇讲了滴答定时器在内核什么位置,这篇讲讲滴答定时器结构体和地址的联系

    不知道大家搜滴答定时地址的时候有没有注意到,SysTick_BASE的下面就是SysTick的定义

#define SysTick             ((SysTick_Type *)       SysTick_BASE)

    这个东西第一次接触还是感觉挺绕的(初学者强烈推荐一本入门书《C和指针》(*^__^*) ),这句什么意思呢,通俗地讲,就是把SysTick定义为了指向SysTick_Type结构体的指针,而这个指针的地址呢,是个固定值, SysTick_BASE,也就是上一篇写的0xE000E010。

    这个SysTick_Type结构体是什么,同样要在内核文件中查到了

typedef struct

{

  __IO uint32_t CTRL;        

  __IO uint32_t LOAD;        

  __IO uint32_t VAL;        

  __I  uint32_t CALIB;      

} SysTick_Type;

    结构体的这四个成员是不是有点眼熟呢,如果你看过数据手册,或者在stm32的工程里做过滴答定时器的初始化就知道是什么了。

    先看cortex内核的数据手册,找到滴答定时器的几个寄存器,如下

stm32之滴答定时器(2):滴答定时器地址与stm32库函数中的结构体

stm32之滴答定时器(2):滴答定时器地址与stm32库函数中的结构体

    再看下滴答定时器的初始化函数中,

SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      

SysTick->VAL   = 0;                                          

SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 

                   SysTick_CTRL_TICKINT_Msk   | 

                   SysTick_CTRL_ENABLE_Msk;      

    有没有发现他们是一一对应的呢。结构体中成员是32位的,32数据是4个8bit,一个地址存储的是8个bit,结构体成员如果是同一类型的数据,则结构体成员的地址是连续的。这样就合理解释了这四个寄存器地址与库函数中结构体的对应关系。

    虽然这里是以滴答定时器为例,但是学习stm32的过程中,都是这样的方式,使硬件的寄存器与库函数中的结构体相关联,这种方法能够帮助大家一点点看懂通过寄存器编写的库函数,加深理解。

    下一篇就写一下滴答定时器初始化中的系统时钟问题吧


推荐阅读

史海拾趣

AntennaHome公司的发展小趣事

AntennaHome公司深知技术创新是企业持续发展的根本动力。因此,公司始终坚持将研发作为企业的核心战略。公司不断加大对研发的投入力度,引进先进的研发设备和人才,同时积极与高校和研究机构开展合作。这些举措使得公司在天线技术领域始终保持领先地位,为公司的长远发展提供了有力保障。

这五个故事展示了AntennaHome公司在电子行业中的发展历程,从创业初期的技术创新到与国际大厂的合作,再到应对行业变革的挑战、参与国际展会以及持续投入研发,每一步都体现了公司的努力和坚持。

台湾奇力(Chip)公司的发展小趣事

在市场拓展方面,奇力公司采取了多元化的销售策略。除了与大型知名企业合作外,奇力公司还积极开拓国内外市场,参加各类展会和论坛,提升品牌知名度和影响力。同时,奇力公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的企业形象。

Bomar Interconnect公司的发展小趣事

在供应链管理方面,Bomar Interconnect公司也进行了一系列优化措施。公司与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可控。同时,公司还加强了对供应链的监控和管理,通过信息化手段提高了供应链的透明度和效率。这些努力不仅降低了公司的采购成本,也提高了供应链的响应速度和灵活性。

Caddell-Burns Manufacturing公司的发展小趣事

在竞争激烈的电子行业中,质量管理是企业生存和发展的关键。Caddell-Burns Manufacturing公司深知这一点,因此他们始终将质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检验、包装等各个环节都进行严格把关。同时,公司还定期对员工进行质量培训,提高他们的质量意识和操作技能。这些措施确保了公司产品的稳定性和可靠性,赢得了客户的信赖。

Advanced Monolythic Ceramics公司的发展小趣事

随着环保意识的日益增强,Caddell-Burns Manufacturing公司也积极响应国家号召,致力于实现绿色发展。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还研发了一系列环保型电子产品,满足了客户对绿色产品的需求。此外,公司还加强了对员工的环保教育,提高他们的环保意识,共同为保护环境贡献力量。

通过以上五个故事,我们可以看到Caddell-Burns Manufacturing公司在电子行业里发展起来的艰辛与辉煌。他们凭借过硬的技术实力、敏锐的市场洞察力和卓越的管理能力,在激烈的市场竞争中脱颖而出,成为一家备受瞩目的电子制造企业。

Barnbrook Systems Limited公司的发展小趣事

Barnbrook Systems Limited的创始人在电子工程领域拥有深厚的背景,他们看到了市场对于高效能计算设备的需求。于是,公司应运而生,初期专注于研发高性能的电路板。通过不断的技术创新和优化,Barnbrook成功开发出一款具有革命性的电路板,其稳定性和处理速度远超当时市场上的同类产品。这一突破性的技术为Barnbrook赢得了众多客户的青睐,也为公司的快速发展奠定了坚实的基础。

问答坊 | AI 解惑

谁有mini SD卡座的PCB图库

我没有实物也没有样图,如果谁有,就发个pcb图给我就好了…

查看全部问答>

想学Linux的先把C语言指针基础教程给看了----顶嵌

以下是顶嵌嵌入式培训学员延小伟所写的C语言技术文章:     说白了,指针就是地址,地址里面放着不同的值,用操作指针的方法来操作这些值。     在32位机中,指针本身占4位,定义时,可以 int *p=&a,其中int *是一部 ...…

查看全部问答>

c#中如何将图片转为字节数组

我想用网络发送一张图片,把图片转为字节数组时遇到了问题 MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] bt = ms.GetBuffer(); 这种方法在wince中不可以用,弹出NotSupportedExcep ...…

查看全部问答>

单片机LCD12864显示原理及驱动命令?

写驱动程序时要注意的问题有哪些?…

查看全部问答>

linux下如何使用arm-linux-gcc编译器

如题linux下如何使用arm-linux-gcc编译器…

查看全部问答>

Cyclone V试用报告一 远程程序下载初试

收到开发板两周多了,白天公司事忙的不行,晚上还得抱孩子,本来要好好试试PCIe,结果耽搁了不少时日,也连累了玲珑小姐,实在对不住! 总体来说有以下两方面   优点:     1,开发板设计还是比价人性化,供电可以PCIe也可 ...…

查看全部问答>

探讨可编程增益放大器驱动参考引脚

可编程增益放大器 (PGA) 是特殊的放大器结构(请参见图 1),具有经过修整的内部电阻器网络,拥有比采用离散式电阻器组件的放大器更高的性能。正如图 1 中 PGA 传输函数所显示那样,PGA 输出的绝对误差与内部偏移电压(VOS)、增益精度和 VREF 绝对精 ...…

查看全部问答>

这本书,确实不错。

这本书确实很好, 很久以前我就希望自己能写一本这样的书,可是岁月蹉跎,时光流逝了,自己的技术还是没有很大的提升,现在看到你们写到了,真是内心里无比的激动。…

查看全部问答>

AD09中原理图参数预先设定或者模板

图中框到的那个部分的内容,我在设计自己的原理图时候,我希望不用每次都去添加个人信息。因为自己画的原理图都是没有方框里的东西的,我想问下可不可以预先设定一个模板直接调用就可以了,不用每次都去添加个人信息…

查看全部问答>

【R7F0C809】第十三篇--项目第二阶段详细设计2

本帖最后由 陌路绝途 于 2015-11-8 11:04 编辑           输入项: 输出项: 算法由于该程序所用的数据结构简单,所以该程序所使用的查找算法只是简单的按照关键字查找。流程逻辑当用户在下位机触摸屏上按下对应 ...…

查看全部问答>