fly2199

使用汇编语言实现微秒精准延时及复位功能,移植方便

 

asm.c

#include "asm.h"

__asm void
SysCtlDelay(u32 ulCount)
{
    subs    r0, #1;
    bne     SysCtlDelay;
    bx      lr;
}


__asm void 
SystemReset(void)
{
    MOV R0, #1           //; 
    MSR FAULTMASK, R0    //; 清除FAULTMASK 禁止一切中断产生
    LDR R0, =0xE000ED0C  //;
    LDR R1, =0x05FA0004  //; 
    STR R1, [R0]         //; 系统软件复位   
}

 

asm.h

#ifndef __ASM_H
#define __ASM_H

#include "main.h"

extern void SysCtlDelay(u32 ulCount);

extern void SystemReset(void);







#endif

 

delay.c

void DelayUs(u16 us)
{
    SysCtlDelay(12*us);
}

void DelayMs(u16 ms)
{
    int i;
    for(i=0;i<ms;i++)
    {
        HAL_DelayUs(1000);
    }
}

void MCU_Reset(void)
{
    SystemReset();
}

 

分类:

技术点:

相关文章:

  • 2021-01-20
  • 2021-12-14
  • 2021-12-14
  • 2021-11-19
  • 2021-11-19
  • 2021-10-05
  • 2021-11-19
猜你喜欢
  • 2021-12-04
  • 2021-11-19
  • 2021-12-14
  • 2021-12-14
  • 2021-05-05
  • 2021-11-19
  • 2021-11-17
相关资源
相似解决方案