0から1までのクワッドローターUAVの実現(20)UAVMCUドライバー→SYSTICK

著者:妖精の妻謝が店主です
日付:2021/2/18

今年は、機能設計→マインドマップ→回路図設計→PCBレイアウト→溶接PCB→プログラミングコード→機械全体のデバッグから、一連の小さな4軸ドローンが更新され、独自の成長プロセスが記録されます。
この小さな4軸ドローンは大学時代に作られたもので、今では仕事や勉強に組み込まれていることをより深く理解しているので、小さな4軸を再編成して、大きな4軸の飛行制御設計を実現したいと思います。これに基づいて軸。、これらはすべて作業後に行われます!

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

#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