91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-14
  • 語言: 其他
  • 標簽: 電機驅動??

資源簡介

鏡頭變焦步進電機芯片MP6507驅動芯片簡單代碼實現,基于STM32F30x

資源截圖

代碼片段和文件信息

#include?
#include?“cam.h“
#include?“stm32f30x.h“

#if?((defined(USING_LENS_STEP_MOTOR)))

#define?MP_A1_Port??????????GPIOB
#define?MP_A1_Pin???????????GPIO_Pin_12
#define?MP_A2_Port??????????GPIOB
#define?MP_A2_Pin???????????GPIO_Pin_13
#define?MP_B1_Port??????????GPIOB
#define?MP_B1_Pin???????????GPIO_Pin_14
#define?MP_B2_Port??????????GPIOB
#define?MP_B2_Pin???????????GPIO_Pin_15

#define?MP_A1_SET()?????????do{MP_A1_Port->BSRR?=?MP_A1_Pin;}while(0)
#define?MP_A1_CLR()?????????do{MP_A1_Port->BRR?=?MP_A1_Pin;}while(0)
#define?MP_A2_SET()?????????do{MP_A2_Port->BSRR?=?MP_A2_Pin;}while(0)
#define?MP_A2_CLR()?????????do{MP_A2_Port->BRR?=?MP_A2_Pin;}while(0)
#define?MP_B1_SET()?????????do{MP_B1_Port->BSRR?=?MP_B1_Pin;}while(0)
#define?MP_B1_CLR()?????????do{MP_B1_Port->BRR?=?MP_B1_Pin;}while(0)
#define?MP_B2_SET()?????????do{MP_B2_Port->BSRR?=?MP_B2_Pin;}while(0)
#define?MP_B2_CLR()?????????do{MP_B2_Port->BRR?=?MP_B2_Pin;}while(0)

#define?MP_RCC????????(RCC_AHBPeriph_GPIOB)

#define?MP_IDLE?????????????0
#define?MP_STOP?????????????1
#define?MP_RUNNING??????????2

#define?MP_SPD_MIN??????????1
#define?MP_SPD_MAX??????????8

#define?MP_POS_MIN??????????(0)
#define?MP_POS_MIN_RE???????(268)
#define?MP_POS_MIN_RE1???????(396)//視場角70度
#define?MP_POS_MIN_RE2???????(298)//視場角75度
#define?MP_POS_MAX??????????(1120)

static?int?_mp_act?=?MP_IDLE;
int?*_mp_act_init_stop?=?&_mp_act;
static?int?_mp_cnt?=?0;
static?int?_mp_spd?=?8;
static?int?_mp_pos?=?MP_POS_MIN;
static?int?_mp_tgt?=?MP_POS_MIN;
static?struct?timer?_mp_timer;
static?const?uint8_t?_mp_wave_tbl[]?=?{0x050x040x060x020x0A0x080x090x01};
/********************************************************
?*
?********************************************************/
static?inline?void?mp_hw_pwm_set(int?val)
{
????if?(val?&?0x01)
????????MP_A1_SET();
????else
????????MP_A1_CLR();

?????if?(val?&?0x02)
????????MP_A2_SET();
????else
????????MP_A2_CLR();

?????if?(val?&?0x04)
????????MP_B1_SET();
????else
????????MP_B1_CLR();

?????if?(val?&?0x08)
????????MP_B2_SET();
????else
????????MP_B2_CLR();
}

/********************************************************
?*
?********************************************************/
static?void?_mp_hw_timeout_handler(void?*parameter)
{
????int?idx;

????switch?(_mp_act)
????{
????case?MP_IDLE:
????????break;
????case?MP_STOP:
????????mp_hw_pwm_set(0x00);
????????_mp_act?=?MP_IDLE;
????????break;
????case?MP_RUNNING:
????????if?(_mp_cnt++?!=?(MP_SPD_MAX?-?_mp_spd))
????????????break;
????????_mp_cnt?=?0;
????????
????????idx?=?_mp_pos?&?(sizeof(_mp_wave_tbl)?-?1);
????????mp_hw_pwm_set(_mp_wave_tbl[idx]);

????????if?(_mp_pos?!=?_mp_tgt)
????????{
????????????if?(_mp_pos?>?_mp_tgt)
????????????????_mp_pos?--;
????????????else
????????????????_mp_pos?++;
????????}
????????else
????????{
????????????_mp_act?=?MP_STOP;
????????????
????????}
????????break;
?

評論

共有 條評論