该程序是基于STM32微控制器的实时时钟(RTC)测试应用。主要功能包括:初始化系统时钟、延时、串口、LED、LCD和RTC模块;在LCD上显示固定文本信息;通过循环在LCD上动态显示数字计时(0-999),同时控制LED闪烁。程序使用__DATE__和__TIME__获取编译时间,并定义了数字显示查找表disdt\[\]。主循环中分解计数值为百、十、个位,分别用不同颜色显示,每次循环间隔10秒。该代码展示了STM32基础外设的初始化和简单的人机交互实现。
https://download.csdn.net/download/czhaii/93038280?spm=1001.2014.3001.5501
#include <stm32f10x_lib.h>
#include "sys.h"
#include "stdio.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
#include "rtc.h"
const u8 disdt\[\]={48,49,50,51,52,53,54,55,56,57};
const u8 *COMPILED_DATE=DATE;//获得编译日期
const u8 *COMPILED_TIME=TIME;//获得编译时间
int main(void)
{
//u8 t=0;
u8 l,m,n;
u16 i;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LED_Init();
LCD_Init();
RTC_Init();
//RTC_Set(2004,12,31,23,59,55); //设置时间
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(10,10,"Mini STM32");
LCD_ShowString(10,30,"RTC TEST");
LCD_ShowString(10,50,"ATOM@ALIENTEK");
LCD_ShowString(10,70,"2016/10/1");
//显示时间
POINT_COLOR=BLUE;//设置字体为蓝色
//void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
LCD_ShowString(60,130," - - ");
LCD_ShowString(60,162," : : ");
while(1)
{
for(i=0;i<1000;i++)
{
l=i/100;
m=(i-l*100)/10;
n=i-l*100-m*10;
POINT_COLOR=RED;//设置字体为红色
LCD_ShowChar(10,90,disdtl,16,0); //10横向 90纵向disdt\[\]
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowChar(18,90,disdtm,16,0); //18横向 90纵向disdt\[\]
POINT_COLOR=BROWN;//设置字体为棕色
LCD_ShowChar(26,90,disdtn,16,0); //26横向 90纵向disdt\[\]
delay_ms(10000);
LED0=!LED0;
}
delay_ms(10);
};
}
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
#include <stm32f10x_lib.h>
#include "delay.h"
#include "sys.h"
#include "usart.h"
int main (void)
{
u8 t=0;
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
while(1);
{
printf("t:%d\n",t);
t++;
delay_ms(500);
}
}