码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-06-08 11:55:42      阅读:685      评论:0      收藏:0      [点我收藏+]

标签:系统   system   汇编语言   mcu   IV   int   汇编   ltm   中断   

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

 

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 延时函数,复位函数,汇编实现,精准微秒延时

标签:系统   system   汇编语言   mcu   IV   int   汇编   ltm   中断   

原文地址:https://www.cnblogs.com/fly2199/p/9154365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!