stm32 IO、定时器基础配置

#include <stdio.h>
#include "stm32f10x.h"
#include "misc.h"     //中断优先级配置文件
#include "stm32f10x_tim.h"//定时器配置文件

void RCC_Configuration(void);   //系统时钟启动使能
void GPIO_Configuration(void); //GPIO配置
void NVIC_Configuration(void);//中断优先级设置
void TIM3_Configuration(void);//定时器配置

void RCC_Configuration(void)
{
    SystemInit();
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 
}

void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;   
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
    GPIO_SetBits(GPIOB,GPIO_Pin_5); 
}

void TIM3_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;    
  TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
  TIM_TimeBaseStruct.TIM_Period=1999;
  TIM_TimeBaseStruct.TIM_Prescaler=35999;
  TIM_TimeBaseStruct.TIM_ClockDivision=0;
  TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruct);
  TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  TIM_Cmd(TIM3,ENABLE);
}


void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

猜你喜欢

转载自blog.csdn.net/qq_34597963/article/details/88366325