作为无人机方面做嵌入式编写的飞控总结-使用系统嘀嗒定时器评价代码架构的可靠性

1.评价一个mcu,主要看其系统的资源,

    系统的资源,除了物理层上厂家已经定死的固定驱动数量(比如串口数量,iic数量,spi数量或者can数量等等,这个我们没法改变),除此之外,针对我们可以操作的软件层面,系统资源还大致可以分为时间资源和空间资源,这两个资源,在小型系统上的重要性不太明显,但是代码量增大之后,经常不可避免的出现hardfault之类的,或者代码执行不准确等等“莫名其妙”的问题;

2,故给出使用systick嘀嗒定时器,来评价你的嵌入式系统执行效果;

毕竟是定时器,一定具有定时器的特征:定时器的时钟/分频以及重载值+定时器中断      

故:很简单的计算出这个嘀嗒定时器的中断次数(我mcu是F103的,所以系统时钟是72Mhz)

同理,请大家参考我在F4上的设置:

3

——————————————————

uint32_t micros(void)

{
    register uint32_t oldCycle, cycle, timeMs;
    do
    {
        timeMs = __LDREXW(&sysTickUptime);//将&sysTickUptime地址的数值给timeMS
        cycle = *DWT_CYCCNT;
        oldCycle = sysTickCycleCounter;
    }
    while (__STREXW(timeMs , &sysTickUptime));//保存MS到sysTickUptime
    return (timeMs * 1000) + (cycle - oldCycle) / usTicks;

}

----------------------------------------------------------

 if (frame_50Hz)
        {
            frame_50Hz = false;
            currentTime      = micros();
            deltaTime50Hz    = currentTime - previous50HzTime;
            previous50HzTime = currentTime;
         。。。。
            executionTime50Hz = micros() - currentTime;
        }
        if (frame_10Hz)
        {
            frame_10Hz = false;
            currentTime      = micros();
            deltaTime10Hz    = currentTime - previous10HzTime;
            previous10HzTime = currentTime;
                    ......
            executionTime10Hz = micros() - currentTime;
        }
        if (frame_500Hz)
        {         
            frame_500Hz = false;
            currentTime       = micros();//获取当前时间
            deltaTime500Hz    = currentTime - previous500HzTime;//得到时间增量
            previous500HzTime = currentTime;//保存当前时间

            executionTime500Hz = micros() - currentTime;//本次运算执行时间长度保存到executionTime500Hz
        }

         。。。。

--------------------------

4。还有一个办法,利用普通的定时器来判断具体函数所耗费的时间资源,比如下实例:TIMx->CNT;

实例:

//系统时间管理
uint32_t system_micrsecond,start_micrsecond, filter_micrsecond,time_test[10];

开发遇到的一个问题!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoxilang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值