py32f030k28单片机开发板RTC时钟代码单片机解密
单片机解密PY32F030K28自带RTC并驱动LED数码显示时钟。
/**
******************************************************************************
* 文件名程:单片机解密
* 说明:数码管显示RTC时钟DEMO
* 软件版本 V0.0.1(2024/4/16 16:02)
******************************************************************************
**/
#include "main.h"
#include "rtc.h"
#include "rcc.h"
#include "led.h"
#include "usart.h"
#include "timepare.h"
/* Private variables ---------------------------------------------------------*/
const uint8_t dispArr[] = {LL_LED_DISP_0, LL_LED_DISP_1, LL_LED_DISP_2, LL_LED_DISP_3, LL_LED_DISP_4, \
LL_LED_DISP_5, LL_LED_DISP_6, LL_LED_DISP_7, LL_LED_DISP_8, LL_LED_DISP_9
};
static uint8_t dotdis = 0 ;
/******************************************************************************
**函数信息 :System_Tick(uint32_t Ticks)
**功能描述 :系统嘀嗒时钟配置
**输入参数 :Ticks 频率
**输出参数 :无
**说 明 :
******************************************************************************/
void System_Tick(uint32_t Ticks)
{
SysTick->LOAD = (uint32_t)((SystemCoreClock / Ticks) - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */
}
/******************************************************************************
**函数信息 :main()
**功能描述 :主函数
**输入参数 :无
**输出参数 :无
**说 明 :
******************************************************************************/
int main(void)
{
/* 配置系统时钟 */
APP_RCC_Config();
/* 配置USART1相关参数 */
APP_USART1_Config();
/* 配置LED相关参数 */
APP_LED_Config();
/* 配置RTC相关参数 */
APP_RTC_Config();
/* 设置RTC时间 */
SET_RTC_Time(8,14,23);
/* 开启系统嘀嗒定时器 */
System_Tick(1000);
while (1)
{
if( TimePare.Tim1ms_flag == 1 ) //1ms任务
{
TimePare.Tim1ms_flag = 0;
if( ++TimePare.Tim10ms_count >= 10 )
{
TimePare.Tim10ms_count = 0;
TimePare.Tim10ms_flag = 1;
}
if( ++TimePare.Tim50ms_count >= 50 )
{
TimePare.Tim50ms_count = 0;
TimePare.Tim50ms_flag = 1;
}
}
if( TimePare.Tim10ms_flag == 1 ) //10ms 任务
{
TimePare.Tim10ms_flag = 0;
if( ++TimePare.Tim100ms_count >= 10 )
{
TimePare.Tim100ms_count = 0;
TimePare.Tim100ms_flag = 1;
}
if( ++TimePare.Tim200ms_count >= 20 )
{
TimePare.Tim200ms_count = 0;
TimePare.Tim200ms_flag = 1;
}
}
if( TimePare.Tim50ms_flag == 1 ) //50ms 任务
{
TimePare.Tim50ms_flag = 0;
}
if( TimePare.Tim100ms_flag == 1 ) //100ms 任务
{
TimePare.Tim100ms_flag = 0;
if( ++TimePare.Tim500ms_count >= 5 )
{
TimePare.Tim500ms_count = 0;
TimePare.Tim500ms_flag = 1;
}
}

芯片解密