随笔 - 733  文章 - 2  评论 - 12  阅读 - 92万

RTT学习之PWM、ADC设备

一 使用步骤:  

  1. 查找 PWM 设备获取设备句柄。rt_device_find()

  2. 设置 PWM 周期和脉冲宽度。rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);

  3. 使能 PWM 设备。rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);//rt_pwm_disable(pwm_dev, PWM_DEV_CHANNEL);

  4. while 循环里每 50 毫秒修改一次脉冲宽度pulse的值,并通过rt_pwm_set设置进去。

  5. 将 PWM通道对应引脚和 LED 对应引脚相连,可以看到 LED 不停的由暗变到亮,然后又从亮变到暗。

  6. 在fish中可以通过命令操作pwm_set pwm1 PWM_DEV_CHANNEL, period, pulse ;pwm_enable/disable pwm1 PWM_DEV_CHANNEL

    7备注可以将方向(直线的斜度)、周期、占空比自定义数据结构更加清晰;                                                                                                                           

ADC设备:可以将ADC设备名称,通道、ADC值、模拟值自定义成结构体

  

复制代码
#define ADC_DEV_NAME        "adc1"  /* ADC 设备名称 */
#define ADC_DEV_CHANNEL     5       /* ADC 通道 */
rt_adc_device_t adc_dev;            /* ADC 设备句柄 */  
rt_uint32_t value;
/* 查找设备 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
/* 使能设备 */
rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
/* 读取采样值 */
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
/* 转换为对应电压值 */
//采样值 * 参考电压 / (1 << 分辨率位数),上面示例代码乘以 100 将数据放大,最后通过 vol / 100 获得电压的整数位值,通过 vol % 100 获得电压的小数位值
vol = value * REFER_VOLTAGE / CONVERT_BITS;///* 参考电压 3.3V,数据精度乘以100保留2位小数*/ rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100); /* 关闭通道 */ rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
复制代码

FISH命令:

  注册:adc probe adc1

       使能、禁能:adc enable 5

       读值 :adc read 5

posted on   杰瑞鼠  阅读(1173)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示