完成6步
This commit is contained in:
parent
0260bad0a7
commit
33c7200dde
@ -16,7 +16,7 @@
|
|||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>STM32F103C8</Device>
|
<Device>STM32F103C8</Device>
|
||||||
<Vendor>STMicroelectronics</Vendor>
|
<Vendor>STMicroelectronics</Vendor>
|
||||||
<PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
|
<PackID>Keil.STM32F1xx_DFP.2.2.0</PackID>
|
||||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||||
<Cpu>IROM(0x08000000,0x10000) IRAM(0x20000000,0x5000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
|
<Cpu>IROM(0x08000000,0x10000) IRAM(0x20000000,0x5000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
|
@ -83,11 +83,12 @@ void TIM2_IRQHandler(void)
|
|||||||
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
|
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
|
||||||
{
|
{
|
||||||
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
|
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
|
||||||
|
motor_info.hall_position = get_hall_position();
|
||||||
|
motor_step();
|
||||||
}
|
}
|
||||||
else if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
|
else if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)
|
||||||
{
|
{
|
||||||
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
|
TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
|
||||||
motor_info.hall_position = get_hall_position();
|
|
||||||
//换相
|
//换相
|
||||||
// pwm_Commute(hallpos);
|
// pwm_Commute(hallpos);
|
||||||
}
|
}
|
||||||
|
@ -29,11 +29,15 @@ typedef struct _motor
|
|||||||
u8 state; //运行状态
|
u8 state; //运行状态
|
||||||
u8 hall_position; //霍尔位置
|
u8 hall_position; //霍尔位置
|
||||||
s16 speed; //转速
|
s16 speed; //转速
|
||||||
|
u32 step;
|
||||||
|
|
||||||
} motor_t;
|
} motor_t;
|
||||||
|
|
||||||
/* Exported Functions --------------------------------------------------------*/
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
extern motor_t motor_info;
|
extern motor_t motor_info;
|
||||||
|
|
||||||
|
void motor_start(void);
|
||||||
|
void motor_stop(void);
|
||||||
|
void motor_step(void);
|
||||||
#endif
|
#endif
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -14,6 +14,6 @@
|
|||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
/* Exported Functions --------------------------------------------------------*/
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
|
void PWM_Config(void);
|
||||||
#endif
|
#endif
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -18,14 +18,15 @@ motor_t motor_info;
|
|||||||
* @retval None
|
* @retval None
|
||||||
* @note 开启霍尔捕捉中断,提供启动力
|
* @note 开启霍尔捕捉中断,提供启动力
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_start()
|
void motor_start(void)
|
||||||
{
|
{
|
||||||
motor_info.state = 1;
|
motor_info.state = 1;
|
||||||
TIM1->CCR1 = 0;
|
TIM1->CCR1 = 0;
|
||||||
TIM1->CCR2 = 0;
|
TIM1->CCR2 = 0;
|
||||||
TIM1->CCR3 = 0;
|
TIM1->CCR3 = 0;
|
||||||
//TODO:开启霍尔捕捉中断
|
//TODO:开启霍尔捕捉中断
|
||||||
motor_step(motor_info.hall_position);
|
motor_info.hall_position = get_hall_position();
|
||||||
|
motor_step();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -34,7 +35,7 @@ void motor_start()
|
|||||||
* @retval None
|
* @retval None
|
||||||
* @note None
|
* @note None
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_stop()
|
void motor_stop(void)
|
||||||
{
|
{
|
||||||
motor_info.state = MOTOR_STATE_STOP;
|
motor_info.state = MOTOR_STATE_STOP;
|
||||||
TIM1->CCR1 = 0;
|
TIM1->CCR1 = 0;
|
||||||
@ -56,12 +57,12 @@ void motor_stop()
|
|||||||
* @note H-PWM, L-ON
|
* @note H-PWM, L-ON
|
||||||
* 电流始终由正极流向负极,所以PWM总是出现在A+、B+、C+,负极保持导通
|
* 电流始终由正极流向负极,所以PWM总是出现在A+、B+、C+,负极保持导通
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
void motor_step()
|
void motor_step(void)
|
||||||
{
|
{
|
||||||
u8 step = 0;
|
u8 step = motor_info.hall_position;
|
||||||
switch (step)
|
switch (step)
|
||||||
{
|
{
|
||||||
case 0x00: //第一步 A+ B-
|
case 0x01: //第一步 A+ B-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
@ -71,60 +72,61 @@ void motor_step()
|
|||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x01: //第二步 A+ B-
|
case 0x02: //第二步 C+ B-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x02: //第三步 A+ B-
|
case 0x03: //第三步 C+ A-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x03: //第四步 A+ B-
|
case 0x04: //第四步 B+ A-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
case 0x04: //第五步 A+ B-
|
case 0x05: //第五步 B+ C-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
||||||
break;
|
break;
|
||||||
case 0x05: //第六步 A+ B-
|
case 0x06: //第六步 A+ C-
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
|
||||||
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
|
||||||
TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_ForcedAction_Active);
|
TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_ForcedAction_Active);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
motor_stop();
|
motor_stop();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -46,9 +46,6 @@ void PWM_Config(void)
|
|||||||
|
|
||||||
// GPIO_SetBits(GPIOB, GPIO_Pin_12);
|
// GPIO_SetBits(GPIOB, GPIO_Pin_12);
|
||||||
|
|
||||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
|
|
||||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|
||||||
// GPIO_Init(GPIOA, &GPIO_InitStructure);
|
|
||||||
//PWM频率:12k
|
//PWM频率:12k
|
||||||
TIM_DeInit(TIM1);
|
TIM_DeInit(TIM1);
|
||||||
|
|
||||||
@ -59,24 +56,25 @@ void PWM_Config(void)
|
|||||||
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
|
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
|
||||||
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
|
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_OCMode = TIM_ForcedAction_InActive; //PWM2:递增计数时CNT<CCRx,OC输出无效电平;递减计数时CNT>CCRx,OC输出有效电平
|
TIM_OCInitStructure.TIM_OCMode = TIM_ForcedAction_InActive; //PWM2:递增计数时CNT<CCRx,OC输出无效电平;递减计数时CNT>CCRx,OC输出有效电平 TIM_ForcedAction_InActive
|
||||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
||||||
TIM_OCInitStructure.TIM_Pulse = 1400;
|
TIM_OCInitStructure.TIM_Pulse = 700;
|
||||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||||
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
|
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
|
||||||
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //TIM_OCIdleState_Set;
|
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; //TIM_OCIdleState_Set;TIM_OCIdleState_Reset
|
||||||
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
|
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Set;
|
||||||
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_Pulse = 1400;
|
TIM_OCInitStructure.TIM_Pulse = 700;
|
||||||
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_Pulse = 1400;
|
TIM_OCInitStructure.TIM_Pulse = 700;
|
||||||
TIM_OC3Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC3Init(TIM1, &TIM_OCInitStructure);
|
||||||
|
|
||||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //TIM输出通道4初始化,用来触发AD注入采样
|
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //TIM输出通道4初始化,用来触发AD注入采样
|
||||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||||
|
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
||||||
TIM_OCInitStructure.TIM_Pulse = 1400;
|
TIM_OCInitStructure.TIM_Pulse = 1400;
|
||||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
|
||||||
TIM_OC4Init(TIM1, &TIM_OCInitStructure);
|
TIM_OC4Init(TIM1, &TIM_OCInitStructure);
|
||||||
@ -110,4 +108,14 @@ void PWM_Config(void)
|
|||||||
TIM_Cmd(TIM1, ENABLE);
|
TIM_Cmd(TIM1, ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 高级定时器TIM1 COM中断初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void TIM1_TRG_COM_IRQHandler(void)
|
||||||
|
{
|
||||||
|
TIM1->SR &= 0xff9f;
|
||||||
|
}
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
#include "USART.h"
|
#include "USART.h"
|
||||||
#include "GPIO.h"
|
#include "GPIO.h"
|
||||||
#include "hall.h"
|
#include "hall.h"
|
||||||
|
#include "pwm.h"
|
||||||
|
#include "motor.h"
|
||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
/* Exported Functions --------------------------------------------------------*/
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
|
@ -21,7 +21,8 @@
|
|||||||
void RCC_Config()
|
void RCC_Config()
|
||||||
{
|
{
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
|
||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);
|
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);
|
||||||
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1, ENABLE);
|
||||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4, ENABLE);
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4, ENABLE);
|
||||||
}
|
}
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -54,17 +55,18 @@ int main(void)
|
|||||||
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
||||||
SysTick_init();
|
SysTick_init();
|
||||||
GPIO_Config(&PB5, GPIO_Mode_Out_PP);
|
GPIO_Config(&PB5, GPIO_Mode_Out_PP);
|
||||||
USART_Config(USART1, 9600);
|
GPIO_Config(&PB12, GPIO_Mode_Out_PP);
|
||||||
|
GPIO_WritePin(&PB12, HIGH);
|
||||||
|
// USART_Config(USART1, 9600);
|
||||||
HALL_Config();
|
HALL_Config();
|
||||||
|
PWM_Config();
|
||||||
USART_SendStr(USART1, "Init OK\n");
|
motor_start();
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
GPIO_WritePin(&PB5, HIGH);
|
GPIO_WritePin(&PB5, HIGH);
|
||||||
delay_ms(500);
|
delay_ms(500);
|
||||||
GPIO_WritePin(&PB5, LOW);
|
GPIO_WritePin(&PB5, LOW);
|
||||||
delay_ms(500);
|
delay_ms(500);
|
||||||
USART_SendStr(USART1, "usart test\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user