OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2995|回复: 7

求助:我PWM输出这种波形是啥原因啊

[复制链接]

9

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-5-30
在线时间
9 小时
发表于 2018-6-5 23:15:19 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-6-5 23:15:20 | 显示全部楼层
回复

使用道具 举报

9

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-5-30
在线时间
9 小时
 楼主| 发表于 2018-6-6 16:18:12 | 显示全部楼层
原子哥,我移植的是例程啊,例程是可以的,为啥我移植以后就不行了。是定时器的问题吗
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-6-6 17:26:40 | 显示全部楼层
上关键源码啊
我有故事,你有酒吗
回复

使用道具 举报

9

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-5-30
在线时间
9 小时
 楼主| 发表于 2018-6-6 19:21:12 | 显示全部楼层

#include "sim900a.h"
#include "usart2.h"
#include "delay.h"
#include "sys.h"
#include "string.h"
#include "led.h"
#include "timer.h"
int main(void)
{
        u8 res=1;
        u16 pwm=100;
        delay_init();                     //延时函数初始化          
        NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级         LED_Init();                             //LED端口初始化
        USART2_Init(115200);        //初始化串口2
        USART3_Init(9600);        //LOG信息
        LED_GPIO_Config();
        TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz
        TIM_SetCompare2(TIM3,pwm);
        UART3SendString("系统初始化完毕\r\n",strlen("系统初始化完毕\r\n"));       
        res=1;
       
        while(res)
        {
                res=GSM_Dect();
                delay_ms(2000);
        }       
        res=1;
        while(res)
        {
                res=SIM900A_CONNECT_SERVER_SEND_INFOR((u8*)"114.115.171.24",(u8*)"5050");
        }       
        while(1)
        {               
                if(Flag_Rec_TCP==1)        //收到服务器下发数据
                {
                        delay_ms(200);
                        pwm=SIM_HANDLE_TCP_CMD();
                        TIM_SetCompare2(TIM3,(u16)pwm);
                        Flag_Rec_TCP=0;
                }
                UART3SendString("欢迎使用全球鹰电子产品\r\n----空闲中----\r\n",strlen("欢迎使用全球鹰电子产品\r\n----空闲中----\r\n"));        delay_ms(5000);
        }
}
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2016-10-28
在线时间
14 小时
发表于 2018-6-7 08:32:42 | 显示全部楼层
帮顶
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-6-7 09:03:09 | 显示全部楼层
西风不识语y 发表于 2018-6-6 19:21
#include "sim900a.h"
#include "usart2.h"
#include "delay.h"

哇,这不关键啊。要你的tim3初始化的代码
我有故事,你有酒吗
回复

使用道具 举报

9

主题

15

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-5-30
在线时间
9 小时
 楼主| 发表于 2018-6-7 15:04:30 | 显示全部楼层
来俩不甜的 发表于 2018-6-7 09:03
哇,这不关键啊。要你的tim3初始化的代码

void TIM3_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //使能定时器3时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
       
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5   

   //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形        GPIOB.5
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

   //初始化TIM3
        TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
       
        //初始化TIM3 Channel2 PWM模式         
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
        TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2

        TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器

        TIM_Cmd(TIM3, ENABLE);  //使能TIM3

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 10:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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