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

查看: 2252|回复: 2

求助求助!!!关于pwm波的!!!求指导。。。。真心求。。。

[复制链接]

2

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-12-11 10:48:23 | 显示全部楼层 |阅读模式
/*这个是我自己写的四个通道的代码,我想通过通道2来控制PA7的led渐亮和渐暗,不过不知道为什么不行,跪求各位达人帮我看看,当然是有空的话。。。*/
#include "stm32f10x.h"                          
   #include          
   
   #include
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
uint16_t CCR1_Val = 300;
uint16_t CCR2_Val = 0;
uint16_t CCR3_Val = 750;
uint16_t CCR4_Val = 0;
uint16_t PrescalerValue = 0;

//void RCC_Configuration(void);                 //时钟配置
//void GPIO_Configuration(void);             //管脚配置
void Delay (__IO uint32_t nCount);         //延时函数
  
int main(void)
{
   uint16_t dir=1;
RCC_open();
//GPIO_Configuration();
GPIO_open();
PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
TIM_TimeBaseStructure.TIM_Period = 900;                                  //周期
//TIM_TimeBaseStructure.TIM_P.rescaler = PrescalerValue;              //分频
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;                             //时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                //计数模式,向上计数                          
               
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);                    //初始TIM3
/*************************** 通道1 ********************************/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;    //PWM2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   //PWM功能使能
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;                            //写比较值(占空比
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;   //置高
TIM_OC1Init(TIM3, &TIM_OCInitStructure);                          //选择1通道
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);                                 //一通道使能
/****************************** 通道2 ******************************/
/*PWM1 Mode configuration: Channel2 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
//TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
/******************************* 通道3 *********************************/
/* PWM1 Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR3_Val;
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
/****************************** 通道4 *********************************/
/* PWM1 Mode configuration: Channel4 */
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
TIM_OC4Init(TIM3, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);                        //
TIM_Cmd(TIM3, ENABLE);                                          //使能计数
while (1)
{
/*CCR3_Val++;
if(CCR3_Val==1000)CCR3_Val=0;
TIM_SetCompare3(TIM3,CCR3_Val);                         //占空比调节
  
Delay(0xFfff);
*/
if(dir)
        CCR2_Val++;
else
        CCR2_Val--;
if(CCR2_Val>300)
        dir=0;
if(CCR2_Val==0)
        dir=1;
       
TIM_SetCompare3(TIM3,CCR2_Val);
Delay(0xFfff);                //为什么要延时这么久?
}
}
/*************************** 时钟配置 *******************************/
/*void RCC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);             //T3时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
               //管脚时钟
} */
/************************** 管脚配置 ******************************/              

/*void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = 0x7fff;
GPIO_Init(GPIOB, &GPIO_InitStructure);
  
}  */
/************************** 延时函数 ******************************/
void Delay (__IO uint32_t nCount)
{
        for(; nCount != 0; nCount--);
}

//子函数
#include
void GPIO_open(void)
{
        GPIO_InitTypeDef GPIO_opening;
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable ,ENABLE);
        /*GPIO_opening.GPIO_Pin = 0xffff;
        GPIO_opening.GPIO_Mode = GPIO_Mode_Out_PP;       
        GPIO_opening.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_opening);
          */
        GPIO_opening.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_6;
        GPIO_opening.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_opening.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_opening);
               
}
#include
void RCC_open(void)
{
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);         
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}
回复

使用道具 举报

0

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-12-14 11:45:19 | 显示全部楼层

RE:求助求助!!!关于pwm波的!!!求指导。。。。真心求。。。

我也是初学STM32,楼主的RCC是不是没有配置好,void RCC_Configuration(void)里要把时钟都配置好打开。
回复 支持 反对

使用道具 举报

0

主题

29

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-12-14 12:55:37 | 显示全部楼层

RE:求助求助!!!关于pwm波的!!!求指导。。。。真心求。。。

32位的我还没搞,不过8位的已经快弄好了,你最好通读一下TIM3的寄存器及其相关设置,我想还是你的寄存器没设置到位,在8位里有一个TIM1_BKR寄存器,要把这个寄存器的第7位置1才会有输出,你看一下有没有类似的设置。
回复 支持 反对

使用道具 举报

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