首页 > 其他分享 >STM32F6xx外设驱动2-delay(寄存器)nulceo144

STM32F6xx外设驱动2-delay(寄存器)nulceo144

时间:2022-11-12 11:56:51浏览次数:47  
标签:void nus us delay tnow nulceo144 STM32F6xx uint32 told

//源文件

static uint32_t fac_us = 0; // us延时倍乘数

/**
 * @brief 初始化延迟函数
 * 				当使用ucos的时候,此函数会初始化ucos的时钟节拍
 * 				SYSTICK的时钟固定为AHB时钟的1/8
 * @param SYSCLK 系统时钟频率
 */
void DelayPhyConfig()
{
	HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); //SysTick频率为HCLK
	fac_us = 216;					     //不论是否使用OS,fac_us都需要使用
}

/**
 * @brief 延时nus
 * 
 * @param nus 要延时的us数.值不要大于1000us
 */
void DelayPhyUs(uint32_t nus)
{
	uint32_t ticks;
	uint32_t told, tnow, tcnt = 0;
	uint32_t reload = SysTick->LOAD; //LOAD的值
	ticks = nus * fac_us;				//需要的节拍数
	told = SysTick->VAL;				//刚进入时的计数器值
	while (1)
	{
		tnow = SysTick->VAL;
		if (tnow != told)
		{
			if (tnow < told)
				tcnt += told - tnow; //这里注意一下SYSTICK是一个递减的计数器就可以了.
			else
				tcnt += reload - tnow + told;
			told = tnow;
			if (tcnt >= ticks)
				break; //时间超过/等于要延迟的时间,则退出.
		}
	};
}

/**
 * @brief 延时nms
 * 
 * @param nms 要延时的ms数
 */
void DelayPhyMs(uint16_t nms)
{
	uint32_t i;
	for (i = 0; i < nms; i++)
		DelayPhyUs(1000);
}


//头文件
/*****************************delay************************************/

void DelayPhyConfig(void);
void DelayPhyUs(uint32_t nus);
void DelayPhyMs(uint16_t nms);
/**********************************************************************/

  

标签:void,nus,us,delay,tnow,nulceo144,STM32F6xx,uint32,told
From: https://www.cnblogs.com/lum0126/p/16883382.html

相关文章

  • STM32F6xx外设驱动3-rcc(寄存器)nulceo144
    //源文件voidRccPhyConfig(){ uint16_tretry=0; RCC->APB1ENR|=1<<28;//电源接口时钟使能PWR->CR1|=3<<14;//高性能模式,时钟可到180MhzPWR->CR1|=1......
  • STM32F6xx外设驱动1-led(寄存器)nulceo144
    //源文件voidLedPhyConfig(){RCC->AHB1ENR|=(1<<1);//使能GPIOB//LD1GPIOB->MODER|=(1<<0*2);//输出模式GPIOB->OTYPER&=~(1<<0);//推挽......
  • 时序约束 input_delay, output_delay
    https://zhuanlan.zhihu.com/p/150534875https://blog.csdn.net/qq_39507748/article/details/114746186https://blog.csdn.net/zyn1347806/article/details/108649518......
  • DelayQueue详解
    DelayQueue介绍【1】DelayQueue是一个支持延时获取元素的阻塞队列,内部采用优先队列PriorityQueue存储元素,同时元素必须实现Delayed接口;在创建元素时可以指定多......
  • decltype delay type
    #include<iostream>usingnamespacestd;template<typenameT1,typenameT2>autof(T1v1[],T2v2[],constsize_tcount)->decltype(v1[0]*v2[0]){decltyp......
  • 时序分析12讲 input delay 边沿对齐带有DDR-PLL的情况
        灰色这部分是数据跳变的位置,存在一定的不稳定性,左端最小延时,右边最大延时bre上升沿之前,are上升沿之后,bfe下降沿bfa下降沿  主要讲带PLL的情况......
  • 时序分析 11讲 DDR input delay
    千兆以太网和FPGA交互的接口就是DDR的双沿采样DDR的DRAM也是双沿采样ADCCMOS的一些芯片这些和FPGA交互的接口都是DDR接口 SCRDDR-DIRECT-一个周期上升沿和下降......
  • 时序分析7讲 input delay 项目实操
     CMOS芯片和FPGA芯片,coms芯片给fpga发时钟和(复数)数据。看手册从CMOS发出的时钟和数据有什么相位关系?需要我们知道还需知道pcb之间时钟的延时和数据延时的差又是......
  • 时序分析第6讲 input delay 实操
    实操      比起之前添加了一些信号 生成bit后   这个就是我们要添加约束的工具在这里主时钟sdrclk既没有送到PLL里边,也没有送到其他的时钟......
  • 时序分析4 IO 时序分析 5input delay介绍
    IO时序分析IO时序分析需要分析哪些关键的参数,又跟哪些关键参数有关联 要进行时序分析就离不开寄存器  寄存器要满足建立时间,保持时间的门限值fpga引脚(pin)与外部......