linux pwm 调屏_[Linux] pwm设备驱动调试

本文档详细介绍了如何在Linux下使用PWM进行屏幕亮度调节,涵盖了PWM的配置、设置周期、占空比以及使能和禁用的操作。通过设备驱动程序实现对PWM设备的控制,包括设置PWM_ID、周期、默认级别等,并提供了相应的读写和ioctl接口。
摘要由CSDN通过智能技术生成

#include #include#include#include#include#include#include#include#include#include#include#include#include#include

#define PWM_LASER_SET_PERIOD _IOW('A', 0x11, unsigned int)

#define PWM_LASER_GET_PERIOD _IOR('A', 0x12, unsigned int)

#define PWM_LASER_SET_DUTY _IOW('A', 0x13, unsigned int)

#define PWM_LASER_GET_DUTY _IOR('A', 0x14, unsigned int)

#define PWM_LASER_ENABLE _IO('A', 0x15)

#define PWM_LASER_DISABLE _IO('A', 0x16)

structpwm_para {intpwm_id;

unsignedintperiod;

unsignedintlevel;

unsignedintduty;struct pwm_device *pwm;

};structpwm_para laser;static void pwm_laser_update(void)

{

laser.duty= laser.level * laser.period / 100;

pwm_config(laser.pwm, laser.duty, laser.period);

}static void pwm_laser_enable(void)

{

pwm_enable(laser.pwm);

}static void pwm_laser_disable(void)

{//关闭pwm之前将占空比设置为0

laser.level = 0;

pwm_laser_update();

pwm_disable(laser.pwm);

}static void pwm_laser_set_period(unsigned intperiod)

{

laser.period= period * 1000000;

pwm_set_period(laser.pwm, laser.period);

}static unsigned int pwm_laser_get_period(void)

{return (laser.period / 1000000);

}static int pwm_laser_open(struct inode *ino

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值