实验要求:本实验是在探索者开发板完成的
硬件:至少有一路带PWM输出功能的GPIO, 能够用来连接LED 灯有一路串口用来做msh shell 终端
软件:
串口驱动
PIN 驱动
PWM 驱动
准备工作:配置开发板LED 灯连接的PIN 号。
实现的代码(rgb_pwm):
extern rt_err_t rt_pwm_enable(int channel);
extern rt_err_t rt_pwm_set(int channel, rt_uint32_t period, rt_uint32_t pulse);
void rt_pwm_rgb_entry(void* parameter)
{
rt_uint8_t random;
}
int rt_pwm_rgb_init()
{
rt_device_t pwm_dev;
rt_thread_t tid;
}
MSH_CMD_EXPORT(rt_pwm_rgb_init, rgb by pwm.);
实现的代码(pwm_breathe):
/ 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_entry1(void* parameter)
{
rt_uint16_t i = 0;
}
int rt_breathe_rgb_init()
{
rt_device_t pwm_dev;
rt_thread_t tid;
}
MSH_CMD_EXPORT(rt_breathe_rgb_init, rgb breathe by pwm.);
实验步骤:
一.移植pwm的驱动(主要是修改定时器的配置内容)
二.下载程序观察现象
结果:
遇到的问题:下载程序后,只是串口可以打印,但是不能够点亮led灯
解决方法:对移植的驱动仔细的从头看了一遍,发现没有配置定时器的输出模式,配置好输出模式就可以解决了。
*