STM32数码管显示


#include "stm32f10x.h"


void SysTick_Init(void);
void Delay_us(__IO u32 nTime);
static __IO u32 TimingDelay;

void TimingDelay_Decrement(void);

int main()
{
		int i,j,num1,num2;
		u8 num[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67};
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);
		SysTick_Init();
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Pin = 0xff;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
		GPIO_Init(GPIOA, &GPIO_InitStructure);  //GPIOA×÷Ϊ¶ÎÑ¡
		GPIO_Init(GPIOB, &GPIO_InitStructure);  //GPIOB×÷Ϊλ

		//µÍµçƽѡ룬£¨¹²ÒõÊýÂë¹Ü£© 
		//

			while(1)
			{

				for(num1=0;num1<10;num1++)
				{
					
						for(num2=0;num2<10;num2++)
						{
							for(j=0;j<50;j++)
							{
								GPIOB->ODR=0x1;
								GPIOA->ODR=num[num1];
								Delay_us(1);
								GPIOB->ODR=0x3;
							
							
								GPIOB->ODR=0x2;
								GPIOA->ODR=num[num2];
								Delay_us(1);
								GPIOB->ODR=0x3;

							}
						}
				}
			
		}
}

void SysTick_Init(void)
{
	if(SysTick_Config(SystemCoreClock /1000))
	{
		while(1);
	}

	SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

void Delay_us(__IO u32 nTime)
{
	TimingDelay = nTime;	
  SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
	while(TimingDelay != 0);
}

void TimingDelay_Decrement(void)
{
	if (TimingDelay != 0x00)
	{
		TimingDelay--;
  }
}

其中systick得使用要注意要添加中断

在stm32f10x_it.c里声明

extern void TimingDelay_Decrement(void);

并加入

void SysTick_Handler(void)
{
    TimingDelay_Decrement();
}

硬件连线:



猜你喜欢

转载自blog.csdn.net/qq_36834256/article/details/80421167