CH565开发加入自定义的函数异常问题

      CH565开发加入自定义的函数,无法达到延时效果。主程序和延时函数如下。

      采用系统自带的DelayMs函数可以达到延时效果。采用自定义delay_1ms函数,无论此处的延时时间设置为多少,好像都没有起到延时效果。

while(1)                          

   {

      // 单字节发送

      R32_PA_CLR |= 1<<12;               // 设置为低电平

      SPI0_MasterTrans( spiBuff, 9 );    // 发送数据

      R32_PA_OUT |= 1<<12;               // 设置为高电平

      delay_1ms(50);                     // 延时

      //DelayMs( 1 );

   }


 void delay_Nus(UINT32 count)

 {

     UINT32 i = 0;

     UINT32 j = 0;


    for(i=0;i

    {

        for(j=0;j<100;j++)   // 延时1us,时钟108M,具体要实测,

        {


        }

    }

 }


void delay_1ms(UINT32 count)

{

     UINT32 i = 0;


    for(i=0;i

    {

       delay_Nus(1000);

    }

}



这个地方可能是代码被优化掉了,试试看在delay_Nus里面随意读写一个寄存器,或者加上一个NOP。


NOP加入进去,编译不通过。是不是系统不识别NOP这条语句


core_riscv.h头文件中有nop的写法

image.png


谢谢,测试了   加入你说的__nop后,延时函数可以用了。


只有登录才能回复,可以选择微信账号登录