打印
[STM32F1]

ARM Compiler 6 VS 5,6是个垃圾吗?

[复制链接]
1048|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lanmanck|  楼主 | 2019-11-18 18:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lanmanck 于 2019-11-18 18:59 编辑

代码:
void TIMER16_IRQHandler(void)
{
        if(SET == timer_interrupt_flag_get(TIMER16, TIMER_INT_UP)){

        /* clear channel 0 interrupt bit */
        timer_interrupt_flag_clear(TIMER16, TIMER_INT_UP);

        /* toggle selected led */
        g_bsl.tick_1ms++;
    }
}

uint32_t get_timer_tick(void)
{
        return g_bsl.tick_1ms;
}

void delay_1ms(uint32_t xms)
{
        volatile uint32_t tick,diff=xms;

        SET_TICK(tick);
        /*while(GET_DIFF_TICK(tick) < diff){}*/

        while(xms){
                diff =  (0x100000+get_timer_tick()-tick)&0xFFFFF ;
                while(diff < 1){
                        diff =  (0x100000+get_timer_tick()-tick)&0xFFFFF ;
                }
                SET_TICK(tick);
                xms--;
        }
}
这个函数就是延时多少毫秒,这个毫秒计数器通过一个毫秒中断一直增加。
这个是5.0编译器的结果,杠杠的:

这个是6.0的结果,不加volatile直接给你优化了,等级为Oz/Os等都试过了,循环一直出不去,我没辙了,大家救救我吧:


使用特权

评论回复
沙发
ayb_ice| | 2019-11-19 09:03 | 只看该作者
SET_TICK是什么操作呢

使用特权

评论回复
板凳
lanmanck|  楼主 | 2019-11-19 11:27 | 只看该作者
ayb_ice 发表于 2019-11-19 09:03
SET_TICK是什么操作呢

就是 x = get_timer_tick();

使用特权

评论回复
地板
ayb_ice| | 2019-11-19 12:01 | 只看该作者
lanmanck 发表于 2019-11-19 11:27
就是 x = get_timer_tick();

这样试试,不知道你为什么要那样写
void delay_1ms(uint32_t xms)
{
        uint32_t uiTmp = get_timer_tick();
        
        while (get_timer_tick() - uiTmp < xms)
        {
                //wait
        }
}

使用特权

评论回复
5
renzheshengui| | 2019-12-10 13:45 | 只看该作者
高版本有时候不如低版本稳定

使用特权

评论回复
6
paotangsan| | 2019-12-10 13:47 | 只看该作者
这是啥意思

使用特权

评论回复
7
labasi| | 2019-12-10 13:50 | 只看该作者
还是版本回退吧

使用特权

评论回复
8
lanmanck|  楼主 | 2019-12-11 11:48 | 只看该作者
labasi 发表于 2019-12-10 13:50
还是版本回退吧

哎,太恶心了。GD原厂的也认为AC6差的一比,piece of shit。我现在把M23模拟成M0+,然后用5.0来编译,一切爽爽的。。。

使用特权

评论回复
9
lanmanck|  楼主 | 2019-12-11 13:45 | 只看该作者
今天又回来看了下, 把步骤分解了,结果这货把311行给去掉了,这就解释了为啥死循环,这啥编译器这是?




使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:跟阿里云拼了: http://www.qcloud.com/redirect.php?redirect=1001&cps_key=361a94179534e81fbc22912619cc97ef

153

主题

397

帖子

3

粉丝