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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2667|回復: 3
收起左側

STM32 PWM控制舵機源程序

[復制鏈接]
ID:980708 發表于 2021-11-13 21:15 | 顯示全部樓層 |閱讀模式
main.c

#include <stm32f10x.h>
#include "led.h"
#include "pwm.h"
#include "delay.h"
#include "usart.h"        
#include "sys.h"
int main(void)
{
        SysTick_Init(72);
  PWM_TIM3_CH1_Init(19999,71);
//        PWM_TIM3_CH2_Init(19999,71);
        uart_init(9600);
        LED_Init();
        while(1)
        {


//                //改變占空比值
                TIM_SetCompare1(TIM3,2500);//1500/20000=1.5/20
                delay_ms(1200);
                delay_ms(1200);
                TIM_SetCompare1(TIM3,1000);//1000/20000=1/20

                delay_ms(1200);
                delay_ms(1200);
        }
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

pwm.c

#include "pwm.h"


void PWM_TIM3_CH1_Init(u16 arr,u16 psc)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_OCInitTypeDef TimOCInitStructure;
        
        //1,開啟 TIM4 GPIOB 復用時鐘
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
        
        //2,初始化PB7,復用功能
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //選擇引腳7                                         
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //輸出頻率最大50MHz                     
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                //復用推挽輸出
        GPIO_Init(GPIOA,&GPIO_InitStructure);
               
        //3,初始化TIM4
        TIM_TimeBaseStructure.TIM_Prescaler = psc; //設置定時器的分頻值:1MHZ
        TIM_TimeBaseStructure.TIM_Period = arr;        //設置計數溢出大小 周期為500us
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        //設置計數器模式為向上計數模式(+1)        
        TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1;                //分頻因子
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);        
                        
        //4,初始化PWM輸出配置,TIM4的CH2
        TimOCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//PWM模式1輸出
        //TimOCInitStructure.TIM_Pulse = 0;                //設置比較寄存中的初值(占空比)
        TimOCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM輸出比較極性高
        TimOCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//使能輸出狀態
        TIM_OC1Init(TIM3, &TimOCInitStructure);
        //TIM_OC2Init(TIM3, &TimOCInitStructure);
        //5,使能TIM4預裝載寄存器
        TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
        //TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
        //6,使能自動重裝載        
        //TIM_ARRPreloadConfig(TIM4,ENABLE);
        
        //7,使能TIM4的PWM輸出
        //TIM_CtrlPWMOutputs(TIM4,ENABLE);
        
        //8,開啟TIM4定時器
        TIM_Cmd(TIM3, ENABLE);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
pwm.h

#ifndef __PWM_H
#define __PWM_H

#include <stm32f10x.h>


void PWM_TIM3_CH1_Init(u16 arr,u16 psc);


#endif


水平不足,僅供參考: PWM1程序.7z (177.4 KB, 下載次數: 62)

評分

參與人數 1黑幣 +20 收起 理由
admin + 20

查看全部評分

回復

使用道具 舉報

ID:973696 發表于 2021-11-17 17:09 | 顯示全部樓層
你的pwm.c文件開頭不用引用#include <stm32f10x.h>都可以么,為什么我會報錯呢,還有你這個函數 SysTick_Init(72)是庫函數自帶的么?還是自己寫的函數#include "sys.h"
回復

使用道具 舉報

ID:980708 發表于 2021-12-20 09:43 | 顯示全部樓層
dll001 發表于 2021-11-17 17:09
你的pwm.c文件開頭不用引用#include 都可以么,為什么我會報錯呢,還有你這個函數 SysTick_Init(72)是庫函 ...

pwm.h有引用#include <stm32f10x.h>,這個 SysTick_Init(72)你可以用這個SystemInit();
回復

使用道具 舉報

ID:980708 發表于 2021-12-20 09:45 | 顯示全部樓層
dll001 發表于 2021-11-17 17:09
你的pwm.c文件開頭不用引用#include 都可以么,為什么我會報錯呢,還有你這個函數 SysTick_Init(72)是庫函 ...

pwm.h有引用#include <stm32f10x.h>,這個函數 SysTick_Init(72)你可以用庫函數自帶的這個SystemInit()。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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