四旋翼无人机从0到1的实现(二十)无人机MCU驱动→SYSTICK

Author:家有仙妻谢掌柜
Date:2021/2/18

今年会更新一个系列,小四轴无人机从功能设计→思维导图→原理图设计→PCBLayout→焊接PCB→程序代码的编写→整机调试一系列,以此记录自己的成长历程!
这个小四轴无人机是大学时期学习制作的,加上现在工作学习对嵌入式的理解更加深入,因此想要重新梳理一下小四轴,之后在此基础上实现大四轴的飞控设计,这些都将在工作之余完成!

//小四轴无人机设计,定时器中断是必须的,用滴答定时器不占用定时器外设资源,它属于内核

#include "systick.h"

/*******************************************************************************
 * fuction	systick_init     
 * brief	滴答定时器一毫秒的初始化
 * param	无
 * return	无
 *******************************************************************************/  
void systick_init(void)
{
    
    
	uint32_t ticks = 0;           //24位 72000
		
	ticks = SystemCoreClock/1000;	/* 重载值设定72000  */
	SysTick_Config(ticks);			/* 开滴答定时器使能 */	
}
/*******************************************************************************
 * fuction	SysTick_Handler    
 * brief	滴答定时器中断服务函数
 * param	无
 * return	无
 *******************************************************************************/  
void SysTick_Handler(void)
{
    
    
	SysTick_uptime_millis++;
	system_task();
}
/*******************************************************************************
 * fuction	delay_ms      
 * brief	可编程的毫秒延时器
 * param	无
 * return	无
 *******************************************************************************/
void delay_ms(uint32_t ms)
{
    
    
	if(ms==0)  
	return;

	uint32_t start =  SysTick_uptime_millis;
	while((SysTick_uptime_millis-start)<ms);      //延时时间值		
}
#ifndef _SYSTICK_H__
#define _SYSTICK_H__

#include "board_define.h"
#include "var_global.h"
void delay_ms(uint32_t ms);
void systick_init(void);

#endif

猜你喜欢

转载自blog.csdn.net/FutureStudio1994/article/details/113854957