你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3150|回复: 1

stm32之pwm

[复制链接]

15

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-4-16 15:12:34 | 显示全部楼层 |阅读模式
stm32之pwm

#include "stm32f10x.h"
#include"stm32f10x_tim.h"
#include"stm32f10x_rcc.h"

void RCC_Configuration(void);
void GPIO_Configuration(void);
void TIM_Configuration(void);

int main(void)
{
{
RCC_Configuration();
GPIO_Configuration();
TIM_Configuration();
 }
 }

void TIM_Configuration()
{
    TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
  TIM_DeInit(TIM1); //重设为缺省值
  //tim初始设置
 TIM_BaseInitStructure.TIM_Prescaler =4000;//预分频(时钟分频)72M/4000=18K
    TIM_BaseInitStructure.TIM_Period = 10000;//装载值 18k/144=1.8hz 就是说向上加的10000便满了    
    TIM_BaseInitStructure.TIM_ClockDivision = 0;
    TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上加
    TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);
    TIM_ARRPreloadConfig(TIM1, ENABLE); //启用ARR的影子寄存器(直到产生更新事件才更改设置)

    //TIM1_OC1模块设置(设置1通道占空比)
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;     //PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//正向通道有效
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;   //反向通道也有效
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;   //互补端的极性
 TIM_OCInitStructure.TIM_Pulse = 5000;    //占空时间 10000中有5000的时间为低,互补的输出正好相反
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);   //启用CCR1寄存器的影子寄存器(直到产生更新事件才更改设置)
 
    //TIM2_OC2模块设置(设置2通道占空比)
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 1000;
    TIM_OC2Init(TIM1, &TIM_OCInitStructure);
    TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);  //启用CCR2寄存器的影子寄存器(直到产生更新事件才更改设置)
  
    TIM_Cmd(TIM1, ENABLE);  //TIM1开启
    TIM_CtrlPWMOutputs(TIM1, ENABLE);  //TIM1_OC通道输出PWM(一定要加)
}

void RCC_Configuration()
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB ,ENABLE); //开启相应端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //启动AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //启动TIM1
}

 void GPIO_Configuration()
 {
 GPIO_InitTypeDef GPIO_InitStructure;
 //GPIO做相应设置,为AF输出
//PA.8/9口设置为TIM1的OC1输出口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PB.13/14口设置为TIM1_CH1N和TIM1_CH2N输出口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
 }
 
<
回复

使用道具 举报

2

主题

83

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2011-4-16 20:03:30 | 显示全部楼层

RE:stm32之pwm

学习了,谢谢
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版