#include "stdbool.h" #include "stm32f10x.h" #include "cmsis_os.h" ///******************************** 功能说明 ************************************* //* TIM4 //*******************************************************************************/ //void BIOS_TIM4_Init( void ) //{ // SET_BIT( RCC->APB2ENR, RCC_APB2ENR_IOPDEN ); // MODIFY_REG( GPIOD->CRH, 0x0FF00000u, 0x0B300000u ); // IO口配置 PWM_OUT // GPIO_PinRemapConfig(GPIO_Remap_TIM4, ENABLE); // SET_BIT( RCC->APB1ENR, RCC_APB1ENR_TIM4EN ); // 打开时钟 // SET_BIT( RCC->APB1ENR, RCC_APB2ENR_AFIOEN ); // 打开复用时钟 // SET_BIT( TIM4->EGR, TIM_EGR_UG ); // 初始化所有寄存器 // TIM4->CR1 = TIM_CR1_ARPE| TIM_CR1_URS; // 自动装载 溢出中断 // TIM4->PSC = SystemCoreClock / 1000000u - 1u; // 设置预分频值 // TIM4->ARR = 100u - 1; // 设置预装载值 // TIM4->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3PE; // 设置计数极性和工作模式 //// TIM4->CCER = TIM_CCER_CC3E; // 使能通道 // TIM4->CCR3 = 100/2u; // 设置翻转值 // NVIC_EnableIRQ(TIM4_IRQn); // SET_BIT( TIM4->CR1, TIM_CR1_CEN ); // 使能计数器 //} /******************************** 功能说明 ************************************* * TIM4->CH3 控制 *******************************************************************************/ void TIM4_CH1_CTRL(uint16_t ARRValue, uint16_t CCRValue ) { TIM4->ARR = ARRValue; // 设置预装载 TIM4->CCR1 = CCRValue; // 设置翻转值 } /******************************** 功能说明 ************************************* * TIM4->CH3 PWM开关 *******************************************************************************/ void TIM4_CH1_CMD( _Bool CMD ) { if( CMD ) { SET_BIT( TIM4->CR1,TIM_CR1_CEN ); SET_BIT( TIM4->CCER,TIM_CCER_CC1E ); } else { CLEAR_BIT( TIM4->CCER,TIM_CCER_CC1E ); CLEAR_BIT( TIM4->CR1,TIM_CR1_CEN ); } } /******************************** 功能说明 ************************************* * DIR *******************************************************************************/ //void TIM4_CH1_DIR( _Bool CMD ) //{ // if( CMD ) // { // GPIO_SetBits( GPIOD, GPIO_ODR_ODR13 ); // } // else // { // GPIO_ResetBits( GPIOD, GPIO_ODR_ODR13 ); // } //} /******************************** 功能说明 ************************************* * *******************************************************************************/ void TIM4_IECMD( _Bool CMD ) { if( CMD ) { SET_BIT(TIM4->DIER, TIM_DIER_CC1IE); // 使能中断 CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // 清除中断标记 } else { CLEAR_BIT(TIM4->DIER,TIM_DIER_CC1IE); // 失能中断 CLEAR_BIT( TIM4->SR, TIM_SR_UIF | TIM_SR_CC1IF ); // 清除中断标记 } } /******************************** 功能说明 ************************************* * TIM3->CH2 控制 *******************************************************************************/ void TIM3_CH2_CTRL(uint16_t ARRValue, uint16_t CCRValue ) { TIM3->ARR = ARRValue; // 设置预装载 TIM3->CCR2 = CCRValue; // 设置翻转值 } /******************************** 功能说明 ************************************* * TIM4->CH3 PWM开关 *******************************************************************************/ void TIM3_CH2_CMD( _Bool CMD ) { if( CMD ) { SET_BIT( TIM3->CR1,TIM_CR1_CEN ); SET_BIT( TIM3->CCER,TIM_CCER_CC2E ); } else { CLEAR_BIT( TIM3->CCER,TIM_CCER_CC2E ); CLEAR_BIT( TIM3->CR1, TIM_CR1_CEN ); } } /******************************** 功能说明 ************************************* * DIR *******************************************************************************/ //void TIM4_CH1_DIR( _Bool CMD ) //{ // if( CMD ) // { // GPIO_SetBits( GPIOD, GPIO_ODR_ODR13 ); // } // else // { // GPIO_ResetBits( GPIOD, GPIO_ODR_ODR13 ); // } //} /******************************** 功能说明 ************************************* * *******************************************************************************/ void TIM3_IECMD( _Bool CMD ) { if( CMD ) { SET_BIT(TIM3->DIER, TIM_DIER_CC2IE); // 使能中断 CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // 清除中断标记 } else { CLEAR_BIT(TIM3->DIER,TIM_DIER_CC1IE); // 失能中断 CLEAR_BIT( TIM3->SR, TIM_SR_UIF | TIM_SR_CC2IF ); // 清除中断标记 } }