#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();
}
硬件连线: