Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread学习营
【内核和外设学习营】 十里 PWM单色呼吸灯实验
发布于 2018-09-05 11:59:03 浏览:3084
订阅该版
* 本帖最后由 hyz_rtt 于 2018-9-6 19:50 编辑 * 1、实验要求: 要求硬件上:至少有一路带PWM输出功能的GPIO,能够用来连接 LED 灯有一路串口用来做 msh shell 终端 软件上:BSP 中已经实现如下驱动:串口驱动,PIN 驱动,PWM驱动 2、准备工作: 硬件:野火霸天虎stm32407开发板 软件:rtt3.1.0 stm32f4xxhal、env0.7.1 3、示例代码 ```#include
#include
#include "stm32f4xx.h" #include "board.h" /********************************宏定义*************************************/ #define PERIOD 512 #define CH_R 1 //#define CH_G 1 //#define CH_B 1 /********************************变量*************************************/ /* LED亮度等级表 PWM表,指数曲线*/ /*?此表使用工程项目下的python脚本index_wave.py生成*/ uint16_t indexWave[] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 25, 27, 29, 31, 33, 36, 38, 41, 44, 47, 51, 54, 58, 63, 67, 72, 77, 83, 89, 95, 102, 110, 117, 126, 135, 145, 156, 167, 179, 192, 206, 221, 237, 254, 272, 292, 313, 336, 361, 387, 415, 445, 477, 512, 512, 477, 445, 415, 387, 361, 336, 313, 292, 272, 254, 237, 221, 206, 192, 179, 167, 156, 145, 135, 126, 117, 110, 102, 95, 89, 83, 77, 72, 67, 63, 58, 54, 51, 47, 44, 41, 38, 36, 33, 31, 29, 27, 25, 23, 22, 20, 19, 18, 17, 15, 14, 13, 12, 12, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 }; /*计算PWM有多少个元素*/ rt_uint16_t POINT_NUM = sizeof(indexWave)/sizeof(indexWave[0]); /********************************示例函数*************************************/ //线程入口函数 void rt_pwm_rgb_entry(void* parameter) { rt_uint16_t i = 0; //使能通道 rt_pwm_enable(CH_R); // rt_pwm_enable(CH_G); // rt_pwm_enable(CH_B); while(1) { rt_pwm_set(CH_R, PERIOD, indexWave*); // rt_pwm_set(CH_G, PERIOD, indexWave*); // rt_pwm_set(CH_B, PERIOD, indexWave*); if(i >= POINT_NUM-1) i = 0; else i++; /* 设置整个过程为3s左右即可达到很好的效果*/ rt_thread_delay(3000/POINT_NUM); } } //初始化函数 int rt_breathe_rgb_init() { rt_device_t pwm_dev; rt_thread_t tid; pwm_dev = rt_device_find("pwm10"); if(NULL != pwm_dev) { tid = rt_thread_create("pwm_led", rt_pwm_rgb_entry, RT_NULL, 512, RT_THREAD_PRIORITY_MAX/3, 20); if (tid != RT_NULL) rt_thread_startup(tid); } return 0; } MSH_CMD_EXPORT(rt_breathe_rgb_init, rgb breathe by pwm.);``` 放到main()函数执行(利用MSH命令也可以),在用户main()里调用 rt_breathe_rgb_init()函数也可以。 4、实验步骤 env配置芯片型号stm32f407ZG、外部时钟源HSE25M、串口驱动、PIN驱动、PWM驱动 5、实验结果 红色灯不同程度的有序闪亮 6、遇到的问题:无 7、解决方法 备注: (1)野火霸天虎F407ZGT6的RGB灯对应PF6\7\8,分别对应TIM10\11\13的通道1,而这几个定时器只有一个通道,所以要实现单色呼吸灯还好,要实现256全彩灯就很麻烦,当时试着写了一下,可惜出现硬件报错,注册两个定时器就会报错,也没找到原因,有想法的期待实验回帖。实现肯定可疑的,因为裸机上是可以实现256全彩灯的。 (2)如果使用正点原子的探索者板子F407ZGT6,虽然连接的TIM5有四个通道可以,但是却没有全彩灯。 (3)如果使用一个板子有全彩灯,然后对应的定时器又有三个以上的通道,在此实验操做基础上,PWM底层驱动开三个通道,示例函数再修改一下就可以实现256全彩灯了。我是这么想的。有理解不对的的地方欢迎回帖。
查看更多
1
个回答
默认排序
按发布时间排序
hyz_rtt
2018-09-05
这家伙很懒,什么也没写!
补充一下实验控制台输出截图[attach]6060[/attach]
撰写答案
登录
注册新账号
关注者
0
被浏览
3.1k
关于作者
hyz_rtt
这家伙很懒,什么也没写!
提问
10
回答
38
被采纳
0
关注TA
发私信
相关问题
1
stm32f407+lan8720 lwip2.0 作业提交
2
玩溜GD32303E-EVAL BSP系列(五)----设备连接网络
3
onenet应用连不上云端
4
【文件系统】晴天文件匹配
5
rtt semc sdram 基于操作系统怎么初始化驱动设备
6
RT-Thread移植笔记
7
RT-Thread内核移植+LoIIs+STM32F103C8+StdLib
8
EVN编译报错,求助大神
9
【内核和外设学习营】十里 简单LED闪亮测试
10
【内核和外设学习营】 十里 串口指令控制RGB灯点亮的颜色
推荐文章
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
ART-Pi2快速上手--点灯
2
ART-Pi2移植CMSIS-DAP(基于CherryUSB协议栈)
3
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
4
RT-Thread中的time溢出问题,时间戳溢出,解决方法
5
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
lizimu
2
篇文章
5
次点赞
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部