Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PWM
潘多拉开发板_Pandora
潘多拉用TIM CHI 做PWM输出,程序编译无错误,但没输出
发布于 2019-08-27 22:20:46 浏览:1885
订阅该版
[table=98%] [tr][td]1、cube配置,生成代码 ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10422&size=300x300&key=c1865573b9195db2&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10435&size=300x300&key=dd2cf70920414409&nocache=yes&type=fixnone) 2、修改kconfig文件 ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10423&size=300x300&key=a9b50057910bacb8&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10431&size=300x300&key=3a91586a79d15e54&nocache=yes&type=fixnone) 3、env配置PWM1 CH1 ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10424&size=300x300&key=202395f133a6272d&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10430&size=300x300&key=894c9acf7c45eb5c&nocache=yes&type=fixnone) 4、修改驱动 ![图六.png](/uploads/201908/27/221844dr4cn3c34zonacg9.png) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10433&size=300x300&key=6b22ebcee2296e6a&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10434&size=300x300&key=a972fe4d752d25e7&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10425&size=300x300&key=73c2c31cfafbad44&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10426&size=300x300&key=d385ec298fd084d0&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10427&size=300x300&key=de50beb2de3d325b&nocache=yes&type=fixnone) 5、线程例程 ```c #include
#include
#define PWM_DEV_NAME "pwm1" /* PWM设备名称 */ #define PWM_DEV_CHANNEL 1 /* PWM通道 */ #define THREAD_PRIORITY 25 /* 线程优先级 */ #define THREAD_STACK_SIZE 512 /* 线程栈大小 */ #define THREAD_TIMESLICE 5 /* 线程时间片大小 */ static rt_thread_t tid1 = RT_NULL; /* 线程句柄 */ struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */ static rt_uint32_t period = 500000; /* 周期为0.5ms,单位为纳秒ns */ static rt_uint32_t pulse = 250000; /* PWM脉冲宽度值的增减方向 */ /* 线程 pwm_entry 的入口函数 */ static void pwm_entry(void *parameter) { rt_uint32_t count = 0; while (1) { rt_thread_mdelay(50); rt_kprintf("pwm out pulse=%d
", pulse); /* step 2、设置 PWM 周期和脉冲宽度,输出特定的波形 */ rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse); } /* step 3、如果不再使用该通道,可以关闭 PWM 通道的输出 */ // rt_pwm_disable(pwm_dev, PWM_DEV_CHANNEL); } static int pwm_test(int argc, char *argv[]) { rt_err_t sate1; /* step 1.1、查找 PWM 设备 */ pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME); if (pwm_dev == RT_NULL) { rt_kprintf("pwm sample run failed! can't find %s device!
", PWM_DEV_NAME); return RT_ERROR; } rt_kprintf("pwm sample run success! find %s device!
", PWM_DEV_NAME); /* step 1.2、设置 PWM 周期和脉冲宽度默认值 */ sate1=rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse); rt_kprintf("sate1=%d
", sate1); /* step 1.3、使能 PWM 设备的输出通道 */ sate1=rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL); rt_kprintf("sate2=%d
", sate1); /* 创建线程,名称是 pwm_thread ,入口是 pwm_entry*/ tid1 = rt_thread_create("pwm_thread", pwm_entry, RT_NULL, THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_TIMESLICE); /* 如果获得线程控制块,启动这个线程 */ if (tid1 != RT_NULL) rt_thread_startup(tid1); return RT_EOK; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(pwm_test, pwm sample); ``` 6、现象 发送 pwm_test命令 ,返回 ![1,1](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10428&size=300x300&key=7d0d17937baff484&nocache=yes&type=fixnone) ![110,0](https://www.rt-thread.org/qa/forum.php?mod=image&aid=10429&size=300x300&key=f33015a11157b89d&nocache=yes&type=fixnone) 但是板子上的灯没有反应 各位大佬,求找找问题!万分感谢!!!! [/td][/tr] [/table]
![图三.png](https://oss-club.rt-thread.org/uploads/201908/27/221845jjknhppyvep5dyff.png)
![图二.png](https://oss-club.rt-thread.org/uploads/201908/27/221844rv59iubtgapib6x9.png)
![图12.png](https://oss-club.rt-thread.org/uploads/201908/27/221844tk7916u8buvvub6d.png) ![QQ截图20190827221319.png](https://oss-club.rt-thread.org/uploads/201908/27/221844nopxzptz42amt5th.png)
![图四.png](https://oss-club.rt-thread.org/uploads/201908/27/221845ove9ttvtjgufsuue.png)
![图一.png](https://oss-club.rt-thread.org/uploads/201908/27/221845yvs428j4ya24ys4f.png)
查看更多
14
个回答
默认排序
按发布时间排序
tyustli
2019-08-27
这家伙很懒,什么也没写!
楼主你的 period 和 pulse 都是常数,应该是输出不了 PWM 的吧?
君墨竹
2019-08-27
这家伙很懒,什么也没写!
>楼主你的 period 和 pulse 都是常数,应该是输出不了 PWM 的吧? --- 2KHZ %50的占空比啊
summerxyh
2019-08-28
这家伙很懒,什么也没写!
channel 1的输出模式选择不对吧?是不是要选pwm generation ch1
君墨竹
2019-08-28
这家伙很懒,什么也没写!
>channel 1的输出模式选择不对吧?是不是要选pwm generation ch1 --- 选择了pwm generation ch1模式,重新编译一次还是不行
flyangus
2019-09-01
这家伙很懒,什么也没写!
同样的问题,PE9这个引脚上的LED没有变化。 最新版本的BSP里面已经加上了PWM1和CHANLE1的驱动了,可以直接选了。 好像在STM32Cube中是个惊叹号,不知道是不是和其他的驱动冲突了。
flyangus
2019-09-01
这家伙很懒,什么也没写!
用了最新的bsp,参考[https://www.rt-thread.org/document/site/application-note/driver/pwm/an0037-rtthread-driver-pwm/](https://www.rt-thread.org/document/site/application-note/driver/pwm/an0037-rtthread-driver-pwm/) 又做了一遍,用了PWM2的第3个输出,用逻辑分析仪看PWM依旧没有输出,不知道哪里出问题了?????
flyangus
2019-09-01
这家伙很懒,什么也没写!
[i=s] 本帖最后由 flyangus 于 2019-9-1 22:18 编辑 [/i] #include
#include
#include
/* defined the LED0 pin: PE7 */ //#define LED0_PIN GET_PIN(E, 7) //PWM1 CH1 是IO PE9,蓝色led #define PWM1_DEVICE_NAME "pwm2" #define PWM1_DEVICE_CHANNEL 3 #define PWM1_PERIOD 500000 //周期的单位是ns,0.5ms #define PWM1_STEP 20000 //pwm变化量 static struct rt_device_pwm *pwm_dev; void pwm_led_entry(void *pra) { static rt_uint32_t pwm_pulse = 0; static int dir = 0; while(1) { switch(dir) { case 0: pwm_pulse += PWM1_STEP; pwm_pulse = (pwm_pulse >= PWM1_PERIOD)? PWM1_PERIOD : pwm_pulse; if(pwm_pulse == PWM1_PERIOD)dir = 1; break; case 1:pwm_pulse -= PWM1_STEP; pwm_pulse = (pwm_pulse <= 0)? 0 : pwm_pulse; if(pwm_pulse == 0)dir = 0; break; default: break; } rt_pwm_set(pwm_dev,PWM1_DEVICE_CHANNEL,PWM1_PERIOD,pwm_pulse); rt_kprintf("%s %d %d \r\n",pwm_dev,PWM1_DEVICE_CHANNEL,pwm_pulse); rt_thread_mdelay(50); } } int pwm_sample(void) { static rt_thread_t pwm_led_thread; //初始化pwm设备 pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM1_DEVICE_NAME); if(pwm_dev == RT_NULL) { rt_kprintf("cannot find pwmdev\n"); return RT_ERROR; } rt_pwm_set(pwm_dev,PWM1_DEVICE_CHANNEL,PWM1_PERIOD,0);//初始默认值 rt_pwm_enable(pwm_dev,PWM1_DEVICE_CHANNEL); //创建一个使用pwm设备的线程,如点亮led的线程 pwm_led_thread = rt_thread_create("led_thread",pwm_led_entry,0,1024,10,10); if(pwm_led_thread == RT_NULL) { rt_kprintf("create pwm thread failed\n"); return RT_ERROR; } rt_thread_startup(pwm_led_thread); return RT_EOK; } MSH_CMD_EXPORT(pwm_sample,pwm sample); int main(void) { //int count = 1; /* set LED0 pin mode to output */ //rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); //rt_pin_write(LED0_PIN, PIN_HIGH); while (1) { //rt_pin_write(LED0_PIN, PIN_HIGH); //rt_thread_mdelay(500); //rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(1000); } return RT_EOK; }
tyustli
2019-09-02
这家伙很懒,什么也没写!
>用了最新的bsp,参考https://www.rt-thread.org/document/site/application-note/driver/pwm/an0037-rtthre ... --- 其他通道同样的操作也没有输出吗?
flyangus
2019-09-02
这家伙很懒,什么也没写!
[i=s] 本帖最后由 flyangus 于 2019-9-2 11:44 编辑 [/i] >其他通道同样的操作也没有输出吗? --- 是的,今天用示波器看了一下,也没有输出。您看一下程序,用了pwm2的第三个channel,从github上拉的是最新的rtthread。能否发一个有输出的程序看一下。
wuhanstudio
2019-09-02
这家伙很懒,什么也没写!
我记得之前用潘多拉也是这个问题,估计是时钟没有开,你可以看看 drv_pwm.c,修改一下 stm32_pwm_init,对照你的定时器修改添加: ``` #ifdef BSP_USING_PWM2 __HAL_RCC_TIM2_CLK_ENABLE(); #endif ``` ``` static int stm32_pwm_init(void) { int i = 0; int result = RT_EOK; pwm_get_channel(); #ifdef BSP_USING_PWM2 __HAL_RCC_TIM2_CLK_ENABLE(); #endif ```
撰写答案
登录
注册新账号
关注者
0
被浏览
1.9k
关于作者
君墨竹
这家伙很懒,什么也没写!
提问
4
回答
4
被采纳
0
关注TA
发私信
相关问题
1
玩iot camera笔记之3测试试用3路pwm
2
[已解决]PWM输出异常分析
3
给RT-Thread添加PWM驱动框架
4
关于rt-thread-3.1.0 pwm
5
关于rt-thread的PWM框架在stm32f103vf应用的疑问
6
rt-thread stm32 bsp adc pwm 外设适配好了吗
7
stm32f103ze 添加pwm 设备失败
8
【正点原子】潘多拉IoT-STM32L475开发板 用menuconfig 看不到PWM....
9
关于rtthread 4.0.0版本中pwm的初始化定时器寄存器读写问题
10
RT-Thread正点原子战舰V3使用PWM设备驱动没有输出
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部