微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 定时器2+串口

STM32 定时器2+串口

时间:11-09 来源:互联网 点击:

/*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟.
从STM32的设计角度上说,没被允许的端将不接入时钟,也就不会耗能,
这是STM32节能的一种技巧,*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

/*初始化LED输出为0*/
LED1_OFF;
LED2_OFF;
LED3_OFF;
LED4_OFF;
LED5_OFF;
LED6_OFF;
LED7_OFF;
LED8_OFF;

/* PB0,5,8,9输出 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOB, &GPIO_InitStructure);

/* PC5,7输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOC, &GPIO_InitStructure);

/*PA7,输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOA, &GPIO_InitStructure);

/*PA8,输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
GPIO_Init(GPIOA, &GPIO_InitStructure);

}

hal.c

/***************************************************
**HAL.c
**主要用于芯片硬件的内部外围和外部外围的初始化,两大INIT函数
**在MAIN中调用,使MAIN函数中尽量与硬件库无关
***************************************************/

#include "STM32Lib\\stm32f10x.h"

//各个内部硬件模块的配置函数
extern void GPIO_Configuration(void); //GPIO
extern void RCC_Configuration(void); //RCC
extern void TIM_Configuration(void); //TIM
extern void USART_Configuration(void); //串口
extern void NVIC_Configuration(void); //NVIC
/*******************************
**函数名:ChipHalInit()
**功能:片内硬件初始化
*******************************/
void ChipHalInit(void)
{
//初始化时钟源
RCC_Configuration();

//初始化GPIO
GPIO_Configuration();

//初始化中断源
NVIC_Configuration();

//初始化串口
USART_Configuration();

//初始化定时器
TIM_Configuration();
}

/*********************************
**函数名:ChipOutHalInit()
**功能:片外硬件初始化
*********************************/
void ChipOutHalInit(void)
{

}

stm32f10x_it.c

/*******************************************************************************
* Function Name : TIM2_IRQHandler TIM2中断
* Description : This function handles TIM2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/

extern u32 count=0;
extern u8 flag=0;
void TIM2_IRQHandler(void)
{

if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
{
//必须清空标志位/ /
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);

//点亮LED5//
LED5_ON;
//LED1直接操作寄存器方式的闪烁
GPIOA->ODR^=GPIO_Pin_8;

}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);

//点亮LED6//
LED6_ON;
}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);

// 点亮LED7//
LED7_ON;
}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC4) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC4);

//点亮LED8//
LED8_ON;

}
else if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
//熄灭所有LED//
count++;
flag=1;
if(count>=99999999)
count=0;

LED5_OFF;
LED6_OFF;
LED7_OFF;
LED8_OFF;
}
}

/*******************************************************************************
* Function Name : TIM3_IRQHandler
* Description : This function handles TIM3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM3_IRQHandler(void)
{
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top