stm32常用功能配置逻辑总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32配置逻辑

1、RCC配置

缺省RCC寄存器—选择时钟源—设置高低速AHB时钟分频—设置ADC时钟—使能锁相环时钟—将锁相环设置为系统时钟—打开使用到的外部时钟

Rcc子函数编写

Void RCC_Configuation();

{

定义错误变量

ErrorStatus HSEStartUpStatus;

初始化RCC外部寄存器

RCC_Deinit();

打开外部高速晶振

RCC_HSEConfig(RCC_HSE_ON)

等待外部高速晶振准备好

HSEStuartUpStatus=RCC_WaitForHSEStuartUp;

判断是否起振

if(HSEStuartUpStuartUpStatus==SUCCES)

{

使能FLASH预读取缓冲区

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable)

设置FLASH_Latency延时周期

FLASH_SetLatency(FLASH_Latency_x)

配置高速总线AHB时钟

RCC_HCLKConfig(RCC_SYSCLK_DIVx);

配置低总线APB2时钟

RCC_PCLK2Config(RCC_HCLK_Divx);

配置低总线APB1时钟

RCC_PCLK1Config(RCC_HCLK_Divx);

配置ADC外部时钟

RCC_ADCCLKConfig(RCC_PCLK2_Divx);

配置锁相环PLL时钟源及倍频

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9)

使能锁相环时钟

RCC_PLLCmd(ENABLE);

等待PLL时钟稳定输出

While(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

将锁相环设置为系统时钟

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

等待校验成功

While(RCC_GetSYSCLKSource()!=0x08);

}

打开使用到的外部时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);

}

2、GPIO的配置

Rcc设置——gpio配置——led操作——while(1)

主函数说明

#include "stm32f10x_lib.h"

主函数

int main(void)

{

时钟配置

void RCC_Configuration(void);

IO口初始化

void GPIO_Configuration(void)

{

定义结构

GPIO_InitTypeDef GPIO_InitStructure;

选择引脚

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x | GPIO_Pin_x;

所选引脚频率

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_xMHz;

所选引脚模式

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

初始化配置

GPIO_Init(GPIOx , &GPIO_InitStructure);

}

while(1)

{

置位引脚

GPIO_SetBits(GPIOA , GPIO_Pin_2);

GPIO_SetBits(GPIOA , GPIO_Pin_3);

Delay(n);

清零引脚

GPIO_ResetBits(GPIOA , GPIO_Pin_2);

GPIO_ResetBits(GPIOA , GPIO_Pin_3);

Delay(n);

}

}

3、EXTI配置规则

配置时钟→初始化IO口→配置中端向量优先级→指定中断IO口→中断方式→使能中断→写中断函数

主函数

Void main (void)

{

开启用到的外设时钟

Void RCC_Configuation();

初始化IO口

Void IO_Configuation();

中断设置

Void EXTI_Configuation()

{

定义结构变量

EXTI_InitTypeDef EXTI_InitStructure;

清除中断标志

EXTI_ClearPendingBit(EXTI_Linex);

选择中断管脚

GPIO_EXTILineConfig(GPIO_PortSourceGPIOx,GPIO_PinSourcex)

选择中段线路

EXTI_InitStructure.EXTI_Line(EXTI_Linex);

中断模式

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

中断触发方式

EXTI_InitStructure.EXTI_Trigger=EXTI_Teigger_Rising_Falling;

中段线路使能

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

初始化设置

EXTI_Init(&EXTI_InitStucture);

相关文档
最新文档