欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 959|回復: 1
收起左側

STM32 PWM無輸出

[復制鏈接]
ID:31164 發表于 2022-8-25 07:00 | 顯示全部樓層 |閱讀模式
#include "pbdata.h"

u16 fre;
void RCC_Configuration(void);
void GPIO_Configuration(void);
void TIM8_Configuration();

void  Delay (uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}

int main(void)
{
     u16 arr=42000;
     u16 led_dt = arr/2;

                 RCC_Configuration();        //系統時鐘初始化
                 GPIO_Configuration();//端口初始化
                 TIM8_Configuration(arr);//定時器和pwm配置
       
                 while(1)
                 {       
                                TIM_SetCompare3(TIM8,led_dt); //用的是TIM3的通道2,輸出PWM         送到相應的寄存器中   //滿占空比為900               
                          TIM_SetCompare3(TIM8, 20);

                                                GPIO_SetBits(GPIOB,GPIO_Pin_5);        //LED 發光
                                                        Delay(0x2ffff);
                                                GPIO_ResetBits(GPIOB,GPIO_Pin_5);//LED 熄滅
                                                        Delay(0x2ffff);
                                                 }       
}

void RCC_Configuration(void)
{
  SystemInit();

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8,ENABLE);//這個是必須的,仿真軟件必須的

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//端口復用,一定在APB2的時鐘線

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
}

void GPIO_Configuration(void)
{


}

void TIM8_Configuration(arr)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
        TIM_OCInitTypeDef TIM_OCInitStructure;             //PWM的結構體
       
       
       
         GPIO_InitTypeDef GPIO_InitStructure;
       
//PWM
        GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;      //通過PWM控制,端口為復用方式輸出
        GPIO_Init(GPIOC,&GPIO_InitStructure);
       
       
       

        //GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM3 復用功能部分映射,可以此找到對應的管腳
        //關于部分映射可以參考“STM32參考手冊”119面
        //定時器初始化
       
        TIM_TimeBaseStruct.TIM_Period=arr;//初值
        TIM_TimeBaseStruct.TIM_Prescaler=2;//預分頻
        //不分頻,在晶振為72MHz的情況下,定時器執行到899后即會溢出,表示計數滿
        TIM_TimeBaseStruct.TIM_ClockDivision=0;
        TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上
        TIM_TimeBaseInit(TIM8,&TIM_TimeBaseStruct);
        //TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_DIV1;                               
       

        //pwm初始化
        //TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;             //使用模式1
        TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能位
        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;  
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
        TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;



//設置輸出極性,一定注意

        //TIM_OCInitStructure.TIM_Pulse = 20;
        TIM_OC2Init(TIM8,&TIM_OCInitStructure);
  TIM_OC2PreloadConfig(TIM8,TIM_OCPreload_Enable);            //與裝載使能,不會說執行一次后就不執行了
        TIM_CtrlPWMOutputs(TIM8,ENABLE);        //MOE 主輸出使能
        TIM_ARRPreloadConfig(TIM8, ENABLE);

        TIM_Cmd(TIM8,ENABLE);
                 
}
/*PWM不是中斷,所以不需要設置中斷優先級 */


stm32f103無輸出PWM.rar

1.27 MB, 下載次數: 4

PROTUES

回復

使用道具 舉報

ID:935919 發表于 2022-8-25 16:09 | 顯示全部樓層
沒有細看, 不過似乎沒有指定 PC8和TIM3的那個通道對應上, 就是TIM3設定的PWM用在哪個引腳上面. 試試看 在GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;  后面加一條 GPIO_InitStruct.Alternate = GPIO_xxx_TIM3; 嘻嘻嘻\
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表