• 大小: 1.34MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-27
  • 语言: 其他
  • 标签: STM32  

资源简介

2019电赛舵机云台控制代码

资源截图

代码片段和文件信息

/*****************************************************************************
 ** File : Api_System.c
 ** Author : Zheng23
 ** Date : 
 ** Function : 系统的一些底层函数
*****************************************************************************/
#include “include.h“
#include 


static u8  fac_us=0;//us延时倍乘数
static u16 fac_ms=0;//ms延时倍乘数
//初始化延迟函数
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟
void InitDelay(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空选择外部时钟  HCLK/8
fac_us=SYSCLK/8;     
fac_ms=(u16)fac_us*1000;
}
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器所以最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hznms单位为ms
//对72M条件下nms<=1864 
void DelayMs(u16 nms)
{        
u32 temp;    
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00;           //清空计数器
SysTick->CTRL=0x01 ;          //开始倒数  
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
SysTick->CTRL=0x00;       //关闭计数器
SysTick->VAL =0X00;       //清空计数器        
}   
//延时nus
//nus为要延时的us数.         
void DelayUs(u32 nus)
{
u32 temp;       
SysTick->LOAD=nus*fac_us; //时间加载     
SysTick->VAL=0x00;        //清空计数器
SysTick->CTRL=0x01 ;      //开始倒数   
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
SysTick->CTRL=0x00;       //关闭计数器
SysTick->VAL =0X00;       //清空计数器  
}

//设置向量表偏移地址
//NVIC_VectTab:基址
//Offset:偏移量
//CHECK OK
void MY_NVIC_SetVectorTable(u32 NVIC_VectTab u32 Offset)  

   //检查参数合法性
assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));
assert_param(IS_NVIC_OFFSET(Offset));    
SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器
//用于标识向量表是在CODE区还是在RAM区
}
//设置NVIC分组
//NVIC_Group:NVIC分组 0~4 总共5组 
//CHECK OK
void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group)  

u32 temptemp1;   
temp1=(~NVIC_Group)&0x07;//取后三位
temp1<<=8;
temp=SCB->AIRCR;  //读取先前的设置
temp&=0X0000F8FF; //清空先前分组
temp|=0X05FA0000; //写入钥匙
temp|=temp1;    
SCB->AIRCR=temp;  //设置分组            
}
//设置NVIC 
//NVIC_PreemptionPriority:抢占优先级
//NVIC_SubPriority       :响应优先级
//NVIC_Channel           :中断编号
//NVIC_Group             :中断分组 0~4
//注意优先级不能超过设定的组的范围!否则会有意想不到的错误
//组划分:
//组0:0位抢占优先级4位响应优先级
//组1:1位抢占优先级3位响应优先级
//组2:2位抢占优先级2位响应优先级
//组3:3位抢占优先级1位响应优先级
//组4:4位抢占优先级0位响应优先级
//NVIC_SubPriority和NVIC_PreemptionPriority的原则是数值越小越优先
//CHECK OK
void MY_NVIC_Init(u8 NVIC_PreemptionPriorityu8 NVIC_SubPriorityu8 NVIC_Channelu8 NVIC_Group)  

u32 temp;
u8 IPRADDR=NVIC_Channel/4;  //每组只能存4个得到组地址 
u8 IPROFFSET=NVIC_Channel%4;//在组内的偏移
IPROFFSET=IPROFFSET*8+4;    //得到偏移的确切位置
MY_NVIC_PriorityGroupConfig(NVIC_Group);//设置分组
temp=NVIC_PreemptionPriority<<(4-NVIC_Group);   
temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
temp&=0xf;//取低四位

if(NVIC_Channel<32)NVIC->ISER[0]|=1< else NVIC->ISER[1]|=1<<(NVIC_Channel-32);    
NVIC->IPR[IPRADDR]|=tem

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机速度控制\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\User\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Pro\
     目录           0  1980-01-01 00:00  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\
     文件        3388  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\stm32f10x_type.h
     文件       12958  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\startup_stm32f10x_md.s
     文件       28290  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\stm32f10x_map.h
     文件        3018  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\Api_System.h
     文件       19198  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\stm32f10x_nvic.h
     文件        2225  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\cortexm3_macro.h
     文件        5665  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\Api_System.c
     文件        6194  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Api\stm32f10x_conf.h
     文件       45096  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\api_system.o
     文件       32984  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\main.o
     文件         335  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\APP.lnp
     文件       37600  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\api_system.crf
     文件       35620  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\app.o
     文件         479  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\APP.sct
     文件       41490  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\startup_stm32f10x_md.lst
     文件       21892  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\APP.axf
     文件         290  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\main.d
     文件         281  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\app.d
     文件          62  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\startup_stm32f10x_md.d
     文件         242  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\app.__i
     文件       36766  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\APP.htm
     文件         246  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\main.__i
     文件       53541  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\APP.map
     文件         269  2019-08-08 16:20  63.可控电动云台(2个u梁版)\PWM舵机控制教程\STM32\STM32\多路舵机控制\Obj\api_system.__i
............此处省略58个文件信息

评论

共有 条评论