找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1848|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

軟件 PWM配置 STM32F103

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:730478 發(fā)表于 2020-4-16 13:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "turn.h"


u8 led0_statelift;
u8 led0_stateright;
u8 pwm_high_counterlift;
u8 pwm_high_counterright;


//配置嵌套中斷控制器
void tim3_nvic_config(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

    NVIC_InitTypeDef  NVIC_Init_Struct;
    NVIC_Init_Struct.NVIC_IRQChannel =TIM3_IRQn;    //設(shè)置定時(shí)器 3中斷
    NVIC_Init_Struct.NVIC_IRQChannelPreemptionPriority =0 ;//搶占與優(yōu)先級(jí)
    NVIC_Init_Struct.NVIC_IRQChannelSubPriority = 0;        //zi優(yōu)先級(jí)
    NVIC_Init_Struct.NVIC_IRQChannelCmd =ENABLE;  //shineng
    NVIC_Init(&NVIC_Init_Struct);

}
//定時(shí)器初始化配置

void tim3_config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
tim3_nvic_config();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_DeInit(TIM3);
TIM_TimeBaseInitStruct.TIM_Prescaler = 36-1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 10-1;              // 200khz翻轉(zhuǎn) 100k個(gè)周期
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); //初始化 TIM2 配置
TIM_ClearFlag(TIM3,TIM_FLAG_Update); //清除溢出中斷標(biāo)志
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3,ENABLE); //開啟時(shí)鐘
}
//定時(shí)器中斷函數(shù)處理

void set_pwm_highlift(u8 high_pd)
{
pwm_high_counterlift = high_pd;
}
void set_pwm_highright(u8 high_pd)
{
pwm_high_counterright = high_pd;
}

void TIM3_IRQHandler(void)
{
     //進(jìn)中斷
   if(TIM_GetITStatus(TIM3, TIM_IT_Update)!= RESET)
   {
        //left
        led0_statelift ++;
        if(led0_statelift <= pwm_high_counterlift)
        {
            LEFT0_ON();
            LEFT1_OFF();

        }
         else if((led0_statelift > pwm_high_counterlift) && (led0_statelift <= 100))
       {
            LEFT0_OFF();
            LEFT1_ON();

        }
         else
        {
            led0_statelift = 0;
        }
   TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);

   //right
        led0_stateright ++;
           if(led0_stateright <= pwm_high_counterright)
        {
            RIGHT0_ON();
            RIGHT1_OFF();

        }
         else if((led0_stateright > pwm_high_counterright) && (led0_stateright <= 100))
       {
            RIGHT0_OFF();
            RIGHT1_ON();

        }
         else
        {
            led0_stateright = 0;
        }
     }  
    TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表