linux中pwm驱动编写的示例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"linux中pwm驱动编写的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"linux中pwm驱动编写的示例分析"这篇文章
千家信息网最后更新 2026年11月02日linux中pwm驱动编写的示例分析
这篇文章主要为大家展示了"linux中pwm驱动编写的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"linux中pwm驱动编写的示例分析"这篇文章吧。
pwm方波可以用来控制很多的设备,比如它可以被用来控制电机。简单来说,就是单位时间内的方波越多,那么电机的转速就会越快;反之就越慢。通过这个特性,soc就可以轻松地利用pwm对外设进行自动控制。
1、驱动目录
drivers/pwm
2、查看对应目录下的Kconfig
config PWM_SAMSUNG tristate "Samsung PWM support" depends on PLAT_SAMSUNG || ARCH_EXYNOS help Generic PWM framework driver for Samsung. To compile this driver as a module, choose M here: the module will be called pwm-samsung.
3、确认PWM_SAMSUNG只依赖于自己之外,继续看Makefile
obj-$(CONFIG_PWM) += core.oobj-$(CONFIG_PWM_SAMSUNG) += pwm-samsung.o
4、根据Makefile查阅pwm-samsung.c文件,结构比较清楚
static struct platform_driver pwm_samsung_driver = { .driver = { .name = "samsung-pwm", .pm = &pwm_samsung_pm_ops, .of_match_table = of_match_ptr(samsung_pwm_matches), }, .probe = pwm_samsung_probe, .remove = pwm_samsung_remove,};module_platform_driver(pwm_samsung_driver);5、soc设备大多数是platform设备,继续寻找probe函数中的有用信息
ret = pwmchip_add(&chip->chip); if (ret < 0) { dev_err(dev, "failed to register PWM chip\n"); clk_disable_unprepare(chip->base_clk); return ret; }6、找到注册函数后,接续看看函数接口点在什么地方
static const struct pwm_ops pwm_samsung_ops = { .request = pwm_samsung_request, .free = pwm_samsung_free, .enable = pwm_samsung_enable, .disable = pwm_samsung_disable, .config = pwm_samsung_config, .set_polarity = pwm_samsung_set_polarity, .owner = THIS_MODULE,};7、pwm设备没有中断函数,一般是立马生效,除此之外,代码中还是有设备树的内容,可以看看
static const struct of_device_id samsung_pwm_matches[] = { { .compatible = "samsung,s3c2410-pwm", .data = &s3c24xx_variant }, { .compatible = "samsung,s3c6400-pwm", .data = &s3c64xx_variant }, { .compatible = "samsung,s5p6440-pwm", .data = &s5p64x0_variant }, { .compatible = "samsung,s5pc100-pwm", .data = &s5pc100_variant }, { .compatible = "samsung,exynos4210-pwm", .data = &s5p64x0_variant }, {},};MODULE_DEVICE_TABLE(of, samsung_pwm_matches);static int pwm_samsung_parse_dt(struct samsung_pwm_chip *chip){ struct device_node *np = chip->chip.dev->of_node; const struct of_device_id *match; struct property *prop; const __be32 *cur; u32 val; match = of_match_node(samsung_pwm_matches, np); if (!match) return -ENODEV; memcpy(&chip->variant, match->data, sizeof(chip->variant)); of_property_for_each_u32(np, "samsung,pwm-outputs", prop, cur, val) { if (val >= SAMSUNG_PWM_NUM) { dev_err(chip->chip.dev, "%s: invalid channel index in samsung,pwm-outputs property\n", __func__); continue; } chip->variant.output_mask |= BIT(val); } return 0;}以上是"linux中pwm驱动编写的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
设备
驱动
内容
函数
示例
分析
篇文章
控制
电机
目录
学习
帮助
清楚
代码
信息
单位
地方
外设
就是
接口
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技股互联网
互联网为科技
碳银互联网科技
凡科互联网科技
宜安科技 互联网金融
上海致骋互联网科技
万达互联网科技
伴你行互联网科技有限公司
重庆科技学院互联网
阿里互联网科技公司
科技与互联网哪个更好
重庆互联网医院沙龙医盟信息科技
群盈汇互联网科技有限公司
本届互联网大会上的黑科技
兰石爱特工业互联网科技分公司
求路客互联网科技电话
马化腾互联网科技教学
互联网科技博主张洲
互联网科技创业计划的风险分析
小牛互联网科技有限公司地址
互联网科技公司华为
北京互联网科技有限公司
碳银互联网科技
浩特互联网科技
安徽鑫晟辉互联网科技
广州凡科互联网科技
移动互联网科技股
保山互联网科技靠谱吗
上海互联网科技园景观
知域互联网科技有限公司官网