STM32 延时函数,复位函数,汇编实现,精准微秒延时

Posted fly2199

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 延时函数,复位函数,汇编实现,精准微秒延时相关的知识,希望对你有一定的参考价值。

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

 

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();
}

 

以上是关于STM32 延时函数,复位函数,汇编实现,精准微秒延时的主要内容,如果未能解决你的问题,请参考以下文章

stm32中的延时函数

stm32 微秒定延时问题

STM32 CubeMX如何生成微秒(us)级延时

STM32学习

stm32 上电复位 和软复位有啥区别.该如何解决

stm32f407软重启的实现(上位机软件控制系统重启)