新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2021-3-16
- 在线时间
- 4 小时
|
int main(void)
{
Stm32_Clock_Init(6);//Ïμí3ê±ÖóéèÖÃ
delay_init(72); //Ñóê±3õê¼»ˉ
LED_Init();
while(1)
{
Pulse_output(50,400000,10000);
}
}
///////////////////////////////////////////////////
void TIM3_pwm_Init(u32 PulseNum)
{
//′Ë2¿·ÖDèêÖ¶ˉDT¸ÄIO¿úéèÖÃ
RCC->APB1ENR|=1<<1; //TIM3ê±Öóê1Äü
RCC->APB2ENR|=1<<3; //ê1ÄüPORTCê±Öó
GPIOC->CRL&=0X0FFFFFFF;//PC7êä3ö
GPIOC->CRL|=0XB0000000; //¸′óÃ1|Äüêä3ö
RCC->APB2ENR|=1<<0; //¿aÆô¸¨Öúê±Öó
AFIO->MAPR&=0XFFFFF3FF; //Çå3yMAPRμÄ[11:10]
AFIO->MAPR|=3<<10; //2¿·ÖÖØó3Ïñ,TIM3_CH2->PC7
//TIM3->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉ֨װÖμ
TIM3->PSC=PulseNum; //Ô¤·ÖÆμÆ÷2»·ÖÆμ
TIM3->DIER|=1<<0; //ÔêDí¸üDÂÖD¶Ï
MY_NVIC_Init(1,3,TIM3_IRQn,2);//ÇàÕ¼1£¬×óóÅÏè¼¶3£¬×é2
TIM3->CCMR1|=7<<11; //CH2 PWM2Ä£ê½
TIM3->CCMR1|=1<<10; //CH2Ô¤×°ÔØê1Äü
TIM3->CCER|=1<<8; //OC2 êä3öê1Äü
TIM3->CR1=0x0080; //ARPEê1Äü
TIM3->SMCR |=0X30; //ÅäÖÆTIM3μÄ¿ØÖÆDÅoÅÎaTIM4 ¼′Äú2¿′¥·¢ITR3
TIM3->SMCR |=0X05; //ÅäÖÆTIM3¶¨ê±Æ÷ÎaÃÅ¿ØÄ£ê½
TIM3->CR1|=0x01; //ê1Äü¶¨ê±Æ÷3
}
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//òç3öÖD¶Ï
{
TIM3->CCER &=0XFFEF;
TIM3->CR1 &=0xfffe;
TIM4->CR1 &=0xfffe;
}
TIM3->SR&=~(1<<0);//Çå3yÖD¶Ï±ê־λ
}
void TIM4_int_Init()
{
//RCC->APB1ENR|=1<<2; //TIM3ê±Öóê1Äü
// TIM4->ARR=arr; //é趨¼ÆêyÆ÷×Ô¶ˉ֨װÖμ//¸ÕoÃ1ms
// TIM4->PSC=psc; //Ô¤·ÖÆμÆ÷7200,μÃμ½10KhzμļÆêyê±Öó
TIM4->PSC=7200;//Ô¤·ÖÆμÆ÷7200,μÃμ½10KhzμļÆêyê±Öó
TIM4->CR1|=0x10; //éèÖÃÏòϼÆêy
TIM4->CR1 &=0xfffd; //½ûÖ1ÖØ¸′¼Æêy£¡£¡£¡£¡£¡
TIM4->CR2|=0x40; //éèÖÃÎaÖ÷¶¨ê±Æ÷£¬±è½Ïêä3öóéOC1REFDÅoÅêä3ö
TIM4->SMCR |=1<<7;
TIM4->DIER|=1<<0; //ÔêDí¸üDÂÖD¶Ï
TIM4->CR1|=0x01; //ê1Äü¶¨ê±Æ÷4
// MY_NVIC_Init(1,3,TIM4_IRQn,2);//ÇàÕ¼1£¬×óóÅÏè¼¶3£¬×é2
RCC->APB2ENR|=1<<0; //¿aÆô¸¨Öúê±Öó
AFIO->MAPR&=0XFFFFF3FF; //Çå3yMAPRμÄ[11:10]
AFIO->MAPR|=1<<11; //2¿·ÖÖØó3Ïñ,TIM3_CH2->PB5
TIM4->CCMR1|=7<<4; //CH2 PWM1Ä£ê½
TIM4->CCMR1|=1<<3; //CH1Ô¤×°ÔØê1Äü
TIM4->CCER|=1<<0; //OC2 êä3öê1Äü
TIM4->CR1=0x0080; //ARPEê1Äü
}
void Pulse_output(u32 Cycle,u32 DutyCycle,u32 PulseNum)
{
u32 ccr1;
u32 arr;
arr= (1000/Cycle);
ccr1= (arr*DutyCycle/100);
RCC->APB1ENR|=3<<1;
TIM3->CR1=0XFFFE;
TIM3_pwm_Init(PulseNum); //×°ÔØ
TIM4_int_Init();
TIM4->ARR=arr;
TIM4->CCR1=20;
TIM3->SR&=~(1<<0);
TIM3->CR1|=0X01;
TIM4->CR1 |=0X01;
}
|
|