本文转载自:https://blog.csdn.net/BorntoX/article/details/51879786

硬件平台:IMX6

内核版本:kernel3.0.35

在linux内核中有一个规律,Linux内核开发者把通用的东西都总结出来,个性化的东西就留出接口,和GPIO驱动类似,PWM驱动在内核中也提供了对应的接口函数,内核提供的接口函数声明在include/linux/pwm.h中

//申请一个PWM资源
struct pwm_device *pwm_request(int pwm_id, const char *label);
//释放一个PWM资源
void pwm_free(struct pwm_device *pwm);
//配置PWM
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
//使能PWM
int pwm_enable(struct pwm_device *pwm);
//不使能PWM
void pwm_disable(struct pwm_device *pwm);

针对内核的框架,IMX6对这些函数的实现位于arch/arm/plat-mxc/pwm.c中,利用这些接口函数我们就可以编写自己的PWM驱动程序

步骤:

1 添加对PWM端口的初始化(本驱动基于飞思卡尔IMX6,这部分不同的板子会有些许不同)

在arch/arm/mach-mx6/board-mx6q_sabresd.h

在MX6Q_PAD_SD1_DAT3__PWM1_PWMO,后面添加

MX6Q_PAD_SD1_DAT1__PWM3_PWMO,

MX6Q_PAD_SD1_CMD__PWM4_PWMO,

MX6Q_PAD_SD1_DAT2__PWM2_PWMO,

2 使用pwm_request,pwm_free,pwm_config,pwm_enable,pwm_disable五个函数编写混杂设备驱动

驱动源码及应用程序见下载地址点击打开链接

最新文章

  1. logstash 配置 logstash-forwarder (前名称:lumberjack)
  2. poi解析excel 03、07
  3. Jni中C++和Java的参数传递 参数对照
  4. Keepalive
  5. Servlet之过滤器
  6. OCI_ERROE - errcode[1591],errmsg[ORA-01591:
  7. 该项目中不存在目标 precomputecompiletypescript The target "PreComputeCompileTypeScript" does not exist in the project
  8. 理解WEB API网关
  9. 自定义组件-BreadcrumbTreeView 的使用
  10. 2015 多校联赛 ——HDU5389(dp)
  11. 深入源码分析SpringMVC底层原理(二)
  12. LODOP中page-break-before:always给div分页
  13. Codeforces543 B. Destroying Roads
  14. [Linux]Linux下signal function传参方式
  15. Vue引入elementUI组件全过程
  16. Docker 部署 portainer
  17. Request实例
  18. tomcat 配置域名访问应用
  19. [转]深入理解mysqldump原理
  20. 跟着刚哥学习Spring框架--事务配置(七)

热门文章

  1. 导入转储文件的时候:Error Code: 1406. Data too long for column - MySQL
  2. Redis Cluster(集群)的搭建
  3. html5-字体css
  4. hdu5029 树链剖分 + 线段树
  5. 【安装虚拟机三】设置Linux IP地址
  6. spring部分注解
  7. python递归的例子
  8. 20165215 2017-2018-2 《Java程序设计》第5周学习总结
  9. 20165215 2017-2018-2 《Java程序设计》第4周学习总结
  10. 75.Java异常处理机制-手动抛出异常