当前位置:宠物百科>综合>资讯>正文

stm32f103c8t6有多少个外部引脚 STM32f103ZET6,学习资料

人气:159 ℃/2024-07-17 16:57:09

在这之前抛出来几个图片。下面慢慢解释

APB2的 RCC_APB2ENR寄存器 <1>


<2>


<3>


注意入口参数 USART1 <4>

在STM32学习过程中,肯定会涉及到寄存器的操作,例如上图的操作就是在选定了串口1的时钟使能位,并对他的时钟进行使能。

解释图1

保留:APB2的 RCC_APB2ENR寄存器是一个32位的寄存器 ,可以观察到高16位默认不操作,只进行低十六位的操作,这样就很方便的进行后续的扩展,我们应该学会这样的扩展思维。

偏移地址:该寄存器的偏移地址表示这个寄存器在APB2的基地址上进行了偏移。偏移位为0X18;前一个寄存器的偏移值位0x14,因为32位占用了四个字节,所以这个寄存器的偏移值就成为了0x18;那顾名思义下一个的偏移地址就是0x1c;

位代表: 例如上面的第十五位 (ADC3EN) ,在我们需要打开ADC3时钟的时候就需要打开这个位,使ADC3EN置1 .此例子中需要使能USARTEN位为1. 关掉顾名思义就需要置0.这样就关掉了这个外设的时钟。

操作界限:上面的rw代表软件可以进行读写此位,所有的表示如下

寄存器操作界限

解释图2

assert_param()这个函数,这个函数是判断形参RCC_APB2Periph有没有错误,在这个里面代表USART1。

解释图3

用APB2RSTR这个寄存器来复位等式右边形参代表的实参。

解释图4

两个形参,一个代表将要使能的外设此处位USART1时钟,第二个ENABLE,代表使能。如果位DISABLE那意思就是失能USART1的时钟。

注释:特别说明下assert_param()这个函数

这个函数是使能GPIOB和GPIOE端口的时钟的。GPIOB和GPIOE是属于APB2外设的所以用函数RCC_APB2PeriphClockCmd ( xxx , xxx) 来使能,我们在进RCC_APB2PeriphClockCmd ( xxx , xxx)函数里面看看:

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

{

assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

assert_param(IS_FUNCTIONAL_STATE(NewState));

if (NewState != DISABLE)

{

RCC->APB2ENR |= RCC_APB2Periph;

}

else

{

RCC->APB2ENR &= ~RCC_APB2Periph;

}

}

在这个函数里面就可以看见我们今天要学习的函数了,在这里我们就分析函数1,以点带面

1、assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

2、assert_param(IS_FUNCTIONAL_STATE(NewState));

1、assert_failed((uint8_t *)__FILE__, __LINE__)这个函数的__FILE__, __LINE__形参,可能是c语言自带的把,具体是怎么获取错误参数的文件和行号我也不知道。

2、加入我们传递的参数是RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 虽然RCC_APB1Periph_TIM2是属于APB1的,则在程序运行时是打印不出错误参数的,因为RCC_APB1Periph_TIM2 和 RCC_APB2Periph_AFIO 都等于0x00000001,大家可以去stm32f10x_rcc.h文件去看。所以大家在使用参数检查功能时还要自己注意一下参数有没有错误。官方这个查错功能不是万能的。

主要是为了检查入口参数,以防止用户输入错误,

搜索更多有关“stm32f103c8t6有多少个外部引脚 STM32f103ZET6,学习资料”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
CopyRight © 2021-2024 宠物百科 All Rights Reserved. 手机版