OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1708|回复: 10

哪位大神有遥控小车的程序啊,分享一下呗(利用pwm的)

[复制链接]

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
发表于 2018-5-8 09:15:35 | 显示全部楼层 |阅读模式
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128107
金钱
128107
注册时间
2010-12-1
在线时间
1130 小时
发表于 2018-5-9 01:49:46 | 显示全部楼层
自己写吧
回复

使用道具 举报

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
 楼主| 发表于 2018-5-9 10:55:03 | 显示全部楼层

        while(1)
        {
                t++;
                key=KEY_Scan(0);                          
                if(key==WKUP_PRES)
                {                 
                        if(pwmval<250)pwmval+=10;
                        TIM_SetCompare1(TIM1,pwmval);                 //输出
                }else if(key==KEY1_PRES)       
                {
                        if(pwmval>10)pwmval-=10;
                        else pwmval=0;
                        TIM_SetCompare1(TIM1,pwmval);                 //输出
                }       
原子哥,这个 pwmval的单位是什么啊?还有就是这个范围是怎么设定的,我想把捕获和这个pwm dac连起来添加一个变量从而达到控制输出电压,您看可行吗?还有就是输出电压的引脚应该怎么设置啊?
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128107
金钱
128107
注册时间
2010-12-1
在线时间
1130 小时
发表于 2018-5-10 01:50:11 | 显示全部楼层
zero007 发表于 2018-5-9 10:55
while(1)
        {
                t++;

没有单位。其他的,你自己尝试
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
 楼主| 发表于 2018-5-11 09:34:47 | 显示全部楼层
正点原子公众号
正点原子 发表于 2018-5-10 01:50
没有单位。其他的,你自己尝试

这个pwm' dac 只有一个pa8是输出口,但是我需要两个口来输出电压,,,这个应该怎么解决啊?原子哥,,,
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128107
金钱
128107
注册时间
2010-12-1
在线时间
1130 小时
发表于 2018-5-13 00:34:48 | 显示全部楼层
zero007 发表于 2018-5-11 09:34
这个pwm' dac 只有一个pa8是输出口,但是我需要两个口来输出电压,,,这个应该怎么解决啊?原子哥,,,

PA8不能输出DAC哦,只能输出PWM
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
 楼主| 发表于 2018-5-13 08:35:31 | 显示全部楼层
正点原子 发表于 2018-5-13 00:34
PA8不能输出DAC哦,只能输出PWM

原子哥,您那个引脚分配表上有写PA8是PWM_DAC输出口啊,,,,难道PWM_dac也是用PA4吗?
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128107
金钱
128107
注册时间
2010-12-1
在线时间
1130 小时
发表于 2018-5-14 01:20:36 | 显示全部楼层
zero007 发表于 2018-5-13 08:35
原子哥,您那个引脚分配表上有写PA8是PWM_DAC输出口啊,,,,难道PWM_dac也是用PA4吗?

是PWM DAC
不是MCU自己的DAC输出
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
 楼主| 发表于 2018-5-14 08:39:20 | 显示全部楼层
正点原子 发表于 2018-5-14 01:20
是PWM DAC
不是MCU自己的DAC输出

那原子哥,这个战舰版输出模拟量的是不是PA4  PA5
回复

使用道具 举报

  离线 

497

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
128107
金钱
128107
注册时间
2010-12-1
在线时间
1130 小时
发表于 2018-5-15 01:55:02 | 显示全部楼层
zero007 发表于 2018-5-14 08:39
那原子哥,这个战舰版输出模拟量的是不是PA4  PA5

是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

2

主题

9

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-4-16
在线时间
9 小时
 楼主| 发表于 2018-5-16 07:44:32 | 显示全部楼层

原子哥,您看我这个程序为什么PA4测不出来对应的变化的电压啊?实在是有点懵。。是不是变量设置出了问题?还是少了哪个函数???


extern u8  TIM5CH1_CAPTURE_STA;                //输入捕获状态                                                   
extern u16        TIM5CH1_CAPTURE_VAL;


int main(void)
{         
        u32 tempa=0;
       
       
        u8 t=0;         
        u16 b;
        u16 a;
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口初始化为115200
  
        Dac1_Init();                                //DAC初始化
        DAC_SetChannel1Data(DAC_Align_12b_R, 0);//初始值为0          

        LED_Init();                             //LED端口初始化
        TIM1_PWM_Init(255,0);        //TIM1 PWM初始化, Fpwm=72M/256=281.25Khz.
  TIM_SetCompare1(TIM1,100);//初始值为0       
        TIM_SetCompare1(TIM1,a);//初始值                         
       
        TIM5_Cap_Init(0XFFFF,72-1);        //以1Mhz的频率计数
        while(1)
        {
                t++;
                delay_ms(10);
               
                if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
                {
                        tempa=TIM5CH1_CAPTURE_STA&0X3F;
                        tempa*=65536;//溢出时间总和
                        tempa+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
                        printf("HIGH:%d us\r\n",tempa);//打印总的高点平时间
                        a=tempa;
                        TIM5CH1_CAPTURE_STA=0;//开启下一次捕获
                       
                }
                 
                        if(a<=1920&&a>1550 )
                        {  b=(a-1550)/148.00+0.8;
                        DAC_SetChannel1Data(DAC_Align_12b_R, b);
                          }                //输出
                 
       else if (a<1450&&a>1080)
                        {        b=(a-1080)/148.00+0.8;
                                DAC_SetChannel1Data(DAC_Align_12b_R, b);
                               
                        }               
                       
     else if (a<=1550&&a>=1450)
                 { b=0;
                         DAC_SetChannel1Data(DAC_Align_12b_R, b);
                         
                 }
       
                delay_ms(10);

        }
}









回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-19 07:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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