嵌入式STM32:定时器(0.6秒)控制依次0-9的数码管显示

软件:KEIL5

选用的是定时器3

main.c

#include  "stm32f10x.h"
#include "led.h"
#include "time3.h"
#include "delay.h"

extern unsigned short beep_count;

int  main()
{

	LED_Init ();

	TIME3_Init();
            
	
	while(1)
		{
				led(1,beep_count);
		}
	}

time3.c

#include "time3.h"
#include "led.h"

void TIME3_Init(void){
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	NVIC_InitTypeDef NVIC_InitStructrue;
	
	RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3 ,ENABLE);
	
	TIM_TimeBaseStructure .TIM_Period = 1000;
	TIM_TimeBaseStructure .TIM_Prescaler = 43199;
	TIM_TimeBaseInit (TIM3 ,&TIM_TimeBaseStructure );
	
	TIM_ITConfig (TIM3 ,TIM_IT_Update,ENABLE );
	
	NVIC_InitStructrue .NVIC_IRQChannel = TIM3_IRQn;
	NVIC_InitStructrue .NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructrue .NVIC_IRQChannelSubPriority = 3;
	NVIC_InitStructrue .NVIC_IRQChannelCmd = ENABLE ;
	NVIC_Init(&NVIC_InitStructrue );
	
	TIM_Cmd (TIM3 ,ENABLE );
}
unsigned short int GPIO_Value=0x0000;
 unsigned short beep_count=0;
void TIM3_IRQHandler(void)
{
 if(TIM_GetITStatus(TIM3,TIM_IT_Update) !=RESET)
	{
	TIM_ClearITPendingBit(TIM3,TIM_IT_Update);	
	beep_count++;
	if(beep_count>=10)
		beep_count=0;

	}
}

tmie3.h

#ifndef _TIME3_H
#define _TIME3_H
#include "stm32f10x.h"
void TIME3_Init(void);


#endif

delay.c

#include "delay.h"

void delay(unsigned int count)
{
   unsigned int i;
   for(;count!=0;count--)
   {
    i=5000;
	while(i--);
	}
	}

delay.h

#ifndef _delay_H
#define _delay_H

#include "stm32f10x.h"

void delay_init(void);
void delay_ms(u16 nms);
void delay_us(u32 nus);

#endif

led.c

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"

void LED_Init (void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE );
	
	GPIO_InitStructure .GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
	GPIO_InitStructure .GPIO_Mode = GPIO_Mode_Out_PP ;
	GPIO_InitStructure .GPIO_Speed = GPIO_Speed_50MHz ;
	GPIO_Init (GPIOB,&GPIO_InitStructure );
	
	GPIO_ResetBits(GPIOB,GPIO_Pin_5);
	GPIO_ResetBits(GPIOB,GPIO_Pin_6);
	GPIO_ResetBits(GPIOB,GPIO_Pin_7);
	GPIO_ResetBits(GPIOB,GPIO_Pin_8);
	GPIO_ResetBits(GPIOB,GPIO_Pin_9);
	GPIO_ResetBits(GPIOB,GPIO_Pin_10);
	GPIO_ResetBits(GPIOB,GPIO_Pin_11);
	GPIO_ResetBits(GPIOB,GPIO_Pin_12);
	
	GPIO_SetBits(GPIOB,GPIO_Pin_13);
	GPIO_SetBits(GPIOB,GPIO_Pin_14);
	GPIO_SetBits(GPIOB,GPIO_Pin_15);
}
unsigned char led0_9[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void led(unsigned char wei,unsigned char duan)
	
{
	GPIO_Write(GPIOB,led0_9[duan]<<5);
	//GPIO_Write(GPIOB,0x3f<<5);
	
	switch(wei)
	{
		case 1:
	  LSA_H;LSB_H;LSC_H;  break;
		case 2:
		LSA_L;LSB_H;LSC_H;  break;
		case 3:
		LSA_H;LSB_L;LSC_H;  break;
		case 4:
		LSA_L;LSB_L;LSC_H;  break;
		case 5:
		LSA_H;LSB_H;LSC_L;  break;
		case 6:
		LSA_L;LSB_H;LSC_L;  break;
		case 7:
		LSA_H;LSB_L;LSC_L;  break;
		case 8:
		LSA_L;LSB_L;LSC_L;  break;
}
  delay(1);
  GPIO_Write(GPIOB,0x0000);  //ÏûÓ°
}

led.h

#ifndef _LED_H
#define _LED_H
#include "stm32f10x.h"

void LED_Init(void);
void led(unsigned char wei,unsigned char duan);

#define LSA_H GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define LSB_H GPIO_SetBits(GPIOB,GPIO_Pin_14)
#define LSC_H GPIO_SetBits(GPIOB,GPIO_Pin_15)

#define LSA_L GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define LSB_L GPIO_ResetBits(GPIOB,GPIO_Pin_14)
#define LSC_L GPIO_ResetBits(GPIOB,GPIO_Pin_15)

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值