| 
              #include <stm32f10x.h>
 uint8_t seg8[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xa7, 0xa1, 0x86, 0x8e};
 
 void ser_in(uint8_t data)
 {
 uint8_t i;
 for (i = 0; i < 8; i++)
 {
 GPIO_ResetBits(GPIOB, GPIO_Pin_9); // SCLK=>PB9
 if (data & 0x80)
 GPIO_SetBits(GPIOB, GPIO_Pin_7); // DIO=>PB7
 else
 GPIO_ResetBits(GPIOB, GPIO_Pin_7);
 data <<= 1;
 GPIO_SetBits(GPIOB, GPIO_Pin_9);
 }
 }
 
 void par_out(void)
 {
 GPIO_ResetBits(GPIOB, GPIO_Pin_8); // RCLK=>PB8
 GPIO_SetBits(GPIOB, GPIO_Pin_8);
 }
 
 int main(void)
 {
 GPIO_InitTypeDef gpio;
 TIM_TimeBaseInitTypeDef tim;
 
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP | RCC_APB1Periph_TIM6, ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 
 PWR_BackupAccessCmd(ENABLE); // 允许写入Backup寄存器
 RCC_BackupResetCmd(ENABLE); // 复位Backup Domain
 RCC_BackupResetCmd(DISABLE); // 必须清除复位标志, 否则下面的RCC_RTCCLKConfig函数会执行失败
 
 //RCC_ITConfig(RCC_IT_LSIRDY, ENABLE); // 开LSI就绪中断
 //NVIC_EnableIRQ(RCC_IRQn);
 
 RCC_LSICmd(ENABLE); // 开LSI晶振
 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); // RTC选LSI时钟
 RCC_RTCCLKCmd(ENABLE); // 开RTC时钟
 
 RTC_SetCounter(0x12345678); // 设置新时钟值
 RTC_WaitForLastTask(); // 等待设置完毕
 
 // 数码管扫描管脚配置
 gpio.GPIO_Mode = GPIO_Mode_Out_PP;
 gpio.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
 gpio.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &gpio);
 
 // 数码管扫描中断
 TIM_TimeBaseStructInit(&tim);
 tim.TIM_Period = 24;
 tim.TIM_Prescaler = 7199;
 TIM_TimeBaseInit(TIM6, &tim);
 TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);
 TIM_Cmd(TIM6, ENABLE);
 NVIC_EnableIRQ(TIM6_IRQn);
 
 while (1);
 }
 
 void TIM6_IRQHandler(void)
 {
 static uint8_t i = 0;
 static uint32_t n;
 if (i == 0)
 n = RTC_GetCounter();
 if (TIM_GetFlagStatus(TIM6, TIM_FLAG_Update) == SET)
 {
 TIM_ClearFlag(TIM6, TIM_FLAG_Update);
 ser_in(seg8[n & 0x0f]);
 ser_in(1 << i);
 par_out();
 n >>= 4;
 i = (i + 1) % 8;
 }
 }
 
 /*
 void RCC_IRQHandler(void)
 {
 if (RCC_GetITStatus(RCC_IT_LSIRDY) == SET)
 {
 RCC_ClearITPendingBit(RCC_IT_LSIRDY); // 清中断标志位
 }
 }
 */
 
 |