一套成熟稳健的软件版本,其运用的软件设计思想非常重要;例如前后台软件系统中时间基准对于软件时序的影响非常重要,所以尽管嵌入式软件执行大多数是按串行执行(包括中断),但是加入时基结构会使开发人员明确软件的执行时间流,执行效率及是否满足工艺要求等;
一、ARM任意一款MCU都可以移植使用
不管是什么嵌入式软件系统(包括操作系统),时间都是靠硬件定时器来把握产生的;
int main()
{
//初始化系统时钟;
PhySys_SysTemInit();
//初始化gpio
PhyGpio_PeriphInit();
//初始化定时器
PhyTimer_PeriphInit();
//初始化ADC
PhyAdc_PeriphInit();
//初始化SPI
PhySpi_PeriphInit();
//初始化用户想初始化的外设驱动
。。。。
//打开全局中断
PhySys_EnableInterrupt();
while(1)
{
//gpio输出led灯来测算时间,或者查看keil调试内核寄存器窗口时间
if(timer1msFlag)
{
timer1msFlag = 0;
if(task_waitTime >= taskTime)
{
task_waitTime = 0;
userTaskFunc();//需要taskTmie时间才能执行该函数一次;
}
}
}
}
//选用任意定时器来作为时钟源,也可以同时用多个时钟来卡想要的时间
//一般放到定时器ISR里面置时间标志,然后拿到外面函数用,ISR里面执行语句不能多,否则时间误差增加,视软件中断嵌套复杂程度而言;
void TIM0_IRQHandler()
{
if(1 == MOP_TIM0_MODE0->IFR_f.UIF)
{
timer1msFlag = 1;
task_waitTime++;
MOP_TIM0_MODE0->IFR_f.UIF = 0;
}
}