首页 > 其他 > 详细

stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系

时间:2020-04-03 00:01:35      阅读:140      评论:0      收藏:0      [点我收藏+]

A :   1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 

B :  1 #define RCC_APB2Periph_AFIO  ((uint32_t)0x00000001) RCC_APB2Periph_AFIO就是代表十六进制 1

C: 

 1 void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
 2 {
 3   /* Check the parameters */
 4   assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph)); 5   assert_param(IS_FUNCTIONAL_STATE(NewState));
 6   if (NewState != DISABLE)
 7   {
 8     RCC->APB2ENR |= RCC_APB2Periph;  //将RCC->APB2ENR寄存器赋值本例赋值RCC_APB2Periph_AFIO也就是1
 9   }   //RCC->APB2ENR是如何表示RCC下APB2外设时钟使能寄存器(RCC->APB2ENR)的呢                  
10   else
11   {
12     RCC->APB2ENR &= ~RCC_APB2Periph;
13   }
14 }

D:  1 #define RCC    ((RCC_TypeDef *) RCC_BASE)  //定义RCC对应为(RCC_TypeDef *) RCC_BASERCC_BASE为RCC的基地址;RCC_TypeDef 为定义一种的结构体数据类型; (RCC_TypeDef *) RCC_BASE就是讲RCC_BASE强制转化为(RCC_TypeDef *)的地址通俗点说就是强制从RCC_BASE地址开始分配了RCC_TypeDef数据类型的字节

E:  1 #define RCC_BASE   (AHBPERIPH_BASE + 0x1000)    //RCC基地址

F:  1 #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)  //AHB外设基地址

G:  1 #define PERIPH_BASE ((uint32_t)0x40000000)   //外设基地址

H:

 1 typedef struct        //根据上面的解释RCC就是从RCC_BASE这个地址对应的RCC_TypeDef数据类型的内存,
 2 {                     //而这段内存正好对应左边这些特殊功能寄存器的能存CR就是这段内存的起始的一小段   
 3   __IO uint32_t CR;   //这一小段是unit32_t数据类型的内存,那RCC->APB2ENR就能访问APB2ENR这一小段
 4   __IO uint32_t CFGR; //所以RCC->APB2ENR赋值就是对应APB2外设时钟使能寄存器(RCC->APB2ENR)赋值 5   __IO uint32_t CIR;
 6   __IO uint32_t APB2RSTR;
 7   __IO uint32_t APB1RSTR;
 8   __IO uint32_t AHBENR;
 9   __IO uint32_t APB2ENR;
10   __IO uint32_t APB1ENR;
11   __IO uint32_t BDCR;
12   __IO uint32_t CSR;
23 } RCC_TypeDef;
总结  C段中 RCC->APB2ENR |= RCC_APB2Periph;也就代表了将RCC_APB2Periph赋值RCC->APB2ENR本例中是把
RCC_APB2Periph_AFIO也就是十六进制的1赋给了RCC->APB2ENR
查看中文参考手册克制
RCC->APB2ENR寄存器赋值一是就是AFIOEN开启(看下图最后一个)
相应的A段代码RCC_APB2PeriphClockCmd (RCC_APB2Periph_AFIO,ENABLE)函数的意义就是把AFIO打开

中文参考手册对应的APB2外设时钟使能寄存器(RCC->APB2ENR)各位的功能

技术分享图片

 

 

 

技术分享图片

 

 

 

 技术分享图片

 

 

 

 

 

 

 

技术分享图片

 

stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系

原文:https://www.cnblogs.com/zhj868/p/12623735.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!