AnsweredAssumed Answered

MKV30F128代码执行速度问题

Question asked by 兴 姚 on Oct 20, 2019
Latest reply on Nov 14, 2019 by 兴 姚

      我在使用型号为MKV30F128的芯片做程序开发,在使用MCUxpresso Config工具做配置时,发现其Flash的时钟只有主频的1/4,即当主频为80MHZ时,Flash的时钟为20MHZ,那么当程序在Flash中执行时,指令执行速度是不是以20MHZ的频率执行的?

    外设Flash Memory Controller(FMC)的寄存器PFB0CR低5位默认为1,即开启了指令预取和数据预取功能,它对加速程序运行帮助大吗?

 

   另外我在使用UART的中断发送功能时,当UART的S1寄存器标志位TDRE(Transmit Data Register Empty Flag)为1时触发中断,发送中断的开启是在串口接收中断中启动的,UART的TX和RX中断优先级是最高,可以打断任意中断。做了这样的配置后,实际执行时发现打开发送中断使能1.8us后(使能时TDRE位为1),才进入到发送中断执行代码中,是因为这款芯片进入中断时间比较慢吗,还是配置有问题?中断服务程序如下所示:

void UART0_RX_TX_IRQHandler(void)
{
    //发送完成中断,必须要使用TX发送在前,因为RX接收中断完成后就马上执行开启发送中断
    if((UART_S1_TDRE_MASK & UART0->S1) && (UART0->C2 & UART_C2_TIE_MASK))
    {
        COMM_TransferDeal();
    }

    //接收寄存器满时,需要通过读取数据寄存器来清除故障
    //读取数据寄存器可以清除中断标志位
    if ((UART_S1_RDRF_MASK & UART0->S1) && ((UART_C2_RIE_MASK & UART0->C2))) //接收中断
    {
        Comm_ReceiveDeal();
    }

    __DSB();
}

Outcomes