OpenEdv-开源电子网

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

pwm动态调频和输入捕捉配合使用的问题

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-12-18
在线时间
9 小时
发表于 2018-12-25 13:42:52 | 显示全部楼层 |阅读模式
13金钱
在原子的例程基础上,修改程序如下,能够实现42步进电机的动态调频,而且能把输出的脉冲数显示在usart hmi串口屏上:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "timer.h"
#include "usart.h"
//ALIENTEK Mini STM32开发板范例代码8
//PWM输出实验   
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司

extern u8  TIM2CH1_CAPTURE_STA;                //输入捕获状态                                                   
extern u16        TIM2CH1_CAPTURE_VAL;        //输入捕获值

int main(void)
{       
         int temp=0;
        u16 led0pwmval=0;   
        u8 dir=1;       
         u16 arr=8999;
        delay_init();                     //延时函数初始化          
        LED_Init();                          //初始化与LED连接的硬件接口
        TIM1_PWM_Init(8999,0);//不分频。PWM频率=72000/(899+1)=80Khz          
        TIM2_Cap_Init(0XFFFF,72-1);                //以1Mhz的频率计数  
        uart_init(115200);                                 //9600
         LED1=0;
           while(1)
        {
               
                TIM1->ARR=arr;
                arr=arr+10;
                if(arr>=9999)arr=8999;
                delay_ms(10);         
                TIM_SetCompare1(TIM1,(arr+1)/2);       
                if(dir)led0pwmval++;
                else led0pwmval--;         
                if(led0pwmval>300)dir=0;
                if(led0pwmval==0)dir=1;       
                if(TIM2CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
                {
                        temp=temp+1;                //得到总的高电平时间
                        printf("n1.val=%d\xff\xff\xff",temp);
                        TIM2CH1_CAPTURE_STA=0;                        //开启下一次捕获
                }
if(temp==1000)
{
        LED1=!LED1;
temp=0;
}       
        }
}

问题是程序中红色字体部分,似乎跟功能毫无关系,为什么删去之后,程序就不能正常工作?我实在想不明白,请大神解释下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2018-12-25 14:22:15 | 显示全部楼层
本帖最后由 大道一条 于 2018-12-25 14:24 编辑

红色部分原来就是用来调整占空比的,你现在改为50% 就不需要理会,删除肯定不会影响你的代码,你在串口发送数据的时候,添加延时看看。
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-12-18
在线时间
9 小时
 楼主| 发表于 2018-12-25 14:52:01 | 显示全部楼层
本帖最后由 benevolu 于 2018-12-25 15:20 编辑
大道一条 发表于 2018-12-25 14:22
红色部分原来就是用来调整占空比的,你现在改为50% 就不需要理会,删除肯定不会影响你的代码,你在串口发送 ...

我修改过上面的delay_ms(1000),没有效果,串口发送是后来加上去的,应该没影响吧,把红色部分注释掉,就完全没有波形了,百思不得其解
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2018-12-25 15:23:34 | 显示全部楼层
benevolu 发表于 2018-12-25 14:52
我修改过上面的delay_ms(1000),没有效果,串口发送是后来加上去的,应该没影响吧,把红色部分注释掉,就 ...

我建议 ,首先判断灯是否正常,怀疑是你的捕获没有做成功,导致程序假死状态
temp=temp+1;
if(temp==1000)
{
        LED1=!LED1;
         delay_ms(100);
         temp=0;
}
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-12-18
在线时间
9 小时
 楼主| 发表于 2018-12-25 15:33:26 | 显示全部楼层
大道一条 发表于 2018-12-25 15:23
我建议 ,首先判断灯是否正常,怀疑是你的捕获没有做成功,导致程序假死状态
temp=temp+1;
if(temp==10 ...

这个LED1是用来控制电机正反转的,控制丝杆平台往复运动,功能是正常的,捕获也是成功的,屏幕上一直在计数
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2018-12-25 15:52:35 | 显示全部楼层
benevolu 发表于 2018-12-25 15:33
这个LED1是用来控制电机正反转的,控制丝杆平台往复运动,功能是正常的,捕获也是成功的,屏幕上一直在计 ...

程序中红色字体部分,似乎跟功能毫无关系,为什么删去之后,程序就不能正常工作?我实在想不明白,请大神解释下??

那你想要问上面问题
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-12-18
在线时间
9 小时
 楼主| 发表于 2018-12-25 15:56:39 | 显示全部楼层
大道一条 发表于 2018-12-25 15:52
程序中红色字体部分,似乎跟功能毫无关系,为什么删去之后,程序就不能正常工作?我实在想不明白,请大神 ...

红色字体如果保留,功能一切正常,去掉以后,pwm没有输出了
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2018-12-25 16:47:06 | 显示全部楼层
benevolu 发表于 2018-12-25 15:56
红色字体如果保留,功能一切正常,去掉以后,pwm没有输出了

我这好在研究PWM,我试试你这种方式发送PWM看看成不成功。
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-12-18
在线时间
9 小时
 楼主| 发表于 2018-12-25 16:49:20 | 显示全部楼层
本帖最后由 benevolu 于 2018-12-25 16:51 编辑
大道一条 发表于 2018-12-25 16:47
我这好在研究PWM,我试试你这种方式发送PWM看看成不成功。

能加微信吗,我luguangyu1988,我把电机运行视频发你看看吧,程序我打包发你
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2018-12-25 17:07:10 | 显示全部楼层
benevolu 发表于 2018-12-25 16:49
能加微信吗,我luguangyu1988,我把电机运行视频发你看看吧,程序我打包发你

我没有环境,我先验证下PWM发出来是否正常,我加你微信了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 23:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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