stm32 软件精确延时非systick 非中断

发布者:心满意足最新更新时间:2016-05-23 来源: eefocus关键字:stm32  软件精确延时 手机看文章 扫描二维码
随时随地手机看文章
在阿莫上有位大神hcambridge推荐的软件精确延时: 

//精确延时函数调用wait
void  wait(unsigned long n)
{
        do{
        n--;
        }while(n);
}


//精确延时函数
#define  SYSCLK              72               //指明CPU工作频率为72MHz
#define  A             6           //一次循环所花的周期数
#define  B             3           //调用、初始化、返回总共所用的周期数
#define  delay_us(nus)   wait(((nus)*(SYSCLK)-(B))/(A))
#define  delay_ms(nms)   delay_us((nms)*1000)
#define  delay_s(ns)     delay_ms((ns)*1000)
//使用方法:
//delay_us(0.4);   //延时0.4us
//delay_ms(1456);  //延时1.456s
//delay_s(21.4345);//延时21.4345秒

关键字:stm32  软件精确延时 引用地址:stm32 软件精确延时非systick 非中断

上一篇:利用stm32f103的TIM2实现精确延时
下一篇:关于PL2303用于STC单片机下载的讨论

推荐阅读最新更新时间:2024-03-16 14:54

STM32串口1,2,3初始化函数代码(标准库版)
没有使用中断 cks32C8T6、stm32c8t6直接复制使用 其他芯片注意引脚,复用功能什么的 串口1初始化代码 //串口1 void Uart1_init(u32 bound){ //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟 //USART1_TX GPIOA.9 GPIO_InitStruc
[单片机]
Stm32 RTC介绍相关笔记
1.由于最近一段时间要进行期末考试,所以很久没有动32了,从现在开始,可以再开始学了 2.RTC(REAL TIME CLOCK) 1.作为Stm32内部的实时时钟,可以看做一个独立的定时器,在代码的配置下,可以作为时钟日历的功能 2.注意:RTC的配置过程十分敏感,因为对于RTC的配置过程中,是在后备区域进行,由于系统在自动复位以后,自动会禁止后备寄存器和RTC(写保护),所以在配置的过程中要进行对写保护的撤销 3.RTC简图 4.配置重点: 因为RTC配置需要对后备区域进行配置,配置的时候要判断是否寄存器完成和同步,也要取消对备份区的写保护 1.初始化过程 #include del
[单片机]
<font color='red'>Stm32</font> RTC介绍相关笔记
【STM库应用】stm32 之 TIM (详解一 通用定时器)
定时器,中断这两样东西是学习一个MCU必须掌握的,也是非常有用的! STM32的TIM一般有高级定时器TIM1,(TIM8只有在互联性产品有),普通定时器TIM2,TIM3,TIM4,(TIM5,TIM6,TIM7有点设备中没有);今天就只介绍普通定时器,因为高级定时器我还不会!每一个普通定时器都有4路通道! 我们先看看这个逻辑图吧!我们今天先讨论讨论定时器的问题!我用红色笔标过的路线就是定时器的工作路线,时钟有内部时钟产生,到PSC哪里进行分频处理,然后CNT进行计数,上面还有一个自动重装载寄存器APP。 这个是分频器的工作原理,我们可以看,分频器设定之前分频系数为1 ,后面的 分频系数为2,分频系数改变后,计数周
[单片机]
【STM库应用】<font color='red'>stm32</font> 之 TIM (详解一 通用定时器)
基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)
硬件电路图: 我的收获: 这是STM32数据手册上对TIM3通用定时器复用功能重映象的描述,假设让PA6作为PWM输出,从图中可以看出PA6对应TIM3的通道1, 使能TIM3通道1的函数为 TIM_OC1Init();1 同样的,如果想要使能PA7,它对应的是TIM3的通道2,那么使能通道2的函数便是: TIM_OC2Init()1 以此类推,需要注意,使能不同相同定时器不同通道的函数是有一点小差别的,防止在程序中调用TIM_OC1Init()函数来使能TIM3通道2这种情况的发生。 注意看这里,假设使用的是TIM3的通道1,那么这里就要写成 TIM3-》CCR11 类似的如果用TIM3定时器的通道2,这里就要相应的
[单片机]
基于<font color='red'>stm32</font>的PWM输出呼吸灯(包括<font color='red'>stm32</font>呼吸灯代码)
Linux下如何搭建stm32开发环境(一)
Linux对于开发者来说真的是一个非常好的系统,为开发者来说应该不陌生,通常我们在Windows下开发stm32很方便,有非常多的工具,IDE等支持,同样是操作系统,Linux开发STM32也一点不会差。 Linux下开发stm32也有很多方法: 1.使用makefile 2.使用eclipse 3.使用stm32cubemx+sw4stm32 4.... 有大神使用第一种,本人对makefile一知半解,拿不出手。第二种,windows下可以使用eclipse开发,eclipse有linux版本,所以应该也是可以的,不过本人并没有试过。这里要说的就是第三种,当然除了这些,像Mbed之类的在线开发工具,只要有网,无论什么平台都
[单片机]
Linux下如何搭建<font color='red'>stm32</font>开发环境(一)
电源管理(STM32
一、低功耗模式 STM32F1xx 待机模式 电源控制寄存器——PWR_CR 位 1 PDDS:掉电深睡眠 与LPDS位协同操作 0:当CPU进入深睡眠时进入停机模式,调压器的状态由LPDS位控制。 1:CPU进入深睡眠时进入待机模式。 电源控制/状态寄存——PWR_CSR 位 0 WUF:唤醒标志 该位由硬件设置,并只能由POR/PDR(上电/掉电复位)或设置电源控制寄存器(PWR_CR)的 CWUF位清除。 0:没有发生唤醒事件 1:在WKUP引脚上发生唤醒事件或出现RTC闹钟事件。 注:当WKUP引脚已经是高电平时,在(通过设置EWUP位)使能WKUP引脚时,会检测到一个额外的 事件。 位 8
[单片机]
电源管理(<font color='red'>STM32</font>)
STM32串口USART1中断接收和中断发送
  先贴出中断函数:    view plain copy   void USART1_IRQHandler(void){   IF (USART_GetiTStatus(USART1, USART_IT_RXNE) != RESET) {   USART_ClearITPendingBit(USART1, USART_IT_RXNE);   USART1_Buffer =USART_ReceiveData(USART1); //USART1_Buffesh是一个自己定义的接收数组   if(i 3){   SendFlag = 1;   }   }   if(USART_GetITStatus(USART1, USART_I
[单片机]
基于STM32微控制器处理先进电机控制方法
    变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。     首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved