发 帖  
原厂入驻New
[讨论]

stm32程序PB0没动静

2014-5-26 22:50:05  2472
分享
大虾给看看PB0没动静啊!这个程序是PA0输出一个占空比为10%的PWM,但是仿真时PB0没有波???,且周期是20ms实在是不解???
我是这么算的周期 T=((200*7200)/72000000)*2=40MS  可仿真出来的波的周期为20ms
void All_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;  //定义GPIO结构体
RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOB口时钟
/*将PB0配置为推挽输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz时钟速度
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void tiM2_Config(void)
{
TIM_TimeBaseInitTypeDef  TIM2_TimeBaseStructure;//定义结构体
TIM_OCInitTypeDef  TIM2_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA及功能复用IO时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能TIM2时钟
//GPIOA配置为:定时器2的PWM 1个通道复用功能输出
   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//I/O时钟为50MHz
   GPIO_Init(GPIOA, &GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体
//定时器基本配置
TIM2_TimeBaseStructure.TIM_Period =200-1;//计数值为1000
TIM2_TimeBaseStructure.TIM_Prescaler = 7200-1;//3分频
TIM2_TimeBaseStructure.TIM_ClockDivision = 0;//采样分频0
TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure);
TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//定时器配置为PWM1模式
TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM输出比较极性高
// PWM1模式通道1
TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//通道1输出使能
TIM2_OCInitStructure.TIM_Pulse =20;//脉宽值为200
TIM_OC1Init(TIM2,&TIM2_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化TIM2
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR1上的预装载寄存器


/* 配置输出比较通道1中断*/
TIM_ITConfig(TIM2,TIM_IT_CC1,ENABLE);

TIM_Cmd(TIM2, ENABLE);//使能定时器2
}

void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)//判断TIM2的比较1通道是否有中断
{
  TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);//清除比较1中断标志位
  GPIOB->ODR^=GPIO_Pin_0;//将PB0电平反向
}
}
0
2014-5-26 22:50:05   评论 分享淘帖
1 个讨论
TIM2挂载在APB1上面,一般启动文件初始化APB1时钟为36M
2014-5-30 10:18:22 评论

举报

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发讨论
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表