/******************************************************************* main.c file 作者:dong_abc 建立日期: 2011.05.01(2011年劳动节) 修改日期: 版本:V1.0 版权自由,欢迎盗版 Copyright(C) Anybody of Nuvoton MCU lover All rights reserved ********************************************************************/ #include "main.h" /******************************************************************** 函数功能:系统初始化。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ void Sys_Init(void) { UNLOCKREG(); // 芯片注册解锁 SYSCLK->WRCON.XTL12M_EN = 1; // 设定12M外部晶振 DrvSYS_Delay(5000); // 等待时钟就绪 SysTick_Init(); // 系统节拍及中断初始化配置 Timer0_Init(); // 定时器初始化配置 Uart_Init(); // 串口初始化配置 ADC_Init(); // ADC初始化配置 Seg7_Init(); // 数码管初始化配置 Key_Init(); // 按键初始化配置 } /******************************************************************** 函数功能:20ms弱实时回调处理函数。 入口参数:无。 返 回:无。 备 注:盗版农民讲习所的《建立MCU通用处理程序》。 本来要做成芯唐库里类似的回调函数,那种固定模式非常好,只是 n个名字类似的指针变量和函数实在让人晕 ********************************************************************/ void Weekness_20msCallback(void) { Key_Proc(); } /******************************************************************** 函数功能:5ms弱实时回调处理函数。 入口参数:无。 返 回:无。 备 注:盗版农民讲习所的《建立MCU通用处理程序》。 ********************************************************************/ void Weekness_5msCallback(void) { Seg7_Fresh(); } /******************************************************************** 函数功能:系统主函数。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ int main (void) { Sys_Init(); SysTimer_WeeknessRegister( Weekness_20msCallback, Weekness_5msCallback ); while(1) { } } //SysTick.c file #include "SysTick.h" //系统系统节拍计数器变量及弱实时任务函数指针 struct InSysTimer { void ( *Weekness_20ms )(); //20ms弱实时任务函数指针 void ( *Weekness_5ms )(); //5ms弱实时任务函数指针 uint32_t SysTickCnt; //系统节拍计数器 }; struct InSysTimer sInSysTimer; /******************************************************************** 函数功能:系统节拍及中断初始化配置。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ void SysTick_Init(void) { SysTick_Config(12000000/(100*2)); //5ms系统节拍中断 } /******************************************************************** 函数功能:系统节拍中断函数。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ void SysTick_Handler(void) { sInSysTimer.SysTickCnt++; //500ms时钟节拍 if(sInSysTimer.SysTickCnt%100==0) { //系统运行指示灯 //outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 5)); outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ 0x007c); sInSysTimer.SysTickCnt=0; } //20ms弱实时任务函数 if(sInSysTimer.SysTickCnt%4==0) { if(sInSysTimer.Weekness_20ms) (*sInSysTimer.Weekness_20ms)(); } //10ms弱实时任务 if(sInSysTimer.SysTickCnt%2==0) { } //5ms弱实时任务函数 if(sInSysTimer.Weekness_5ms) (*sInSysTimer.Weekness_5ms)(); } /******************************************************************** 函数功能:注册弱实时任务处理函数。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ void SysTimer_WeeknessRegister( void(*Function_20ms)(), void(*Function_5ms)() ) { sInSysTimer.Weekness_20ms = Function_20ms; sInSysTimer.Weekness_5ms = Function_5ms; }
您需要 登录 才可以下载或查看,没有账号?注册
举报
查看全部评分
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
43
5074
22
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号