嵌入式字符设备驱动——ULN2003步进电机驱动程序实现
之前分享了字符设备驱动程序的实现——hello驱动,是不涉及硬件操作的,我说过要给大家分享一篇涉及硬件操作的字符设备驱动程序的实现,今天周末休息,就把我之前挖的坑给大家填上,本来我打算先给大家分享一个最简单的涉及硬件操作的设备驱动程序的实现——按键/LED驱动的,把这个步进电机的驱动程序留给你们后面先自己做一下,想了想其实都是最基本的,就直接上步进电机吧,下面我们开始学习步进电机驱动程序的实现吧!!
字符设备驱动程序实现的步骤
这个我之前讲过了,再温习一遍
1.确定主设备号,一般设置major = 0,让内核进行自动分配
2.定义一个属于自己的file_operations结构体,这个结构体内定了我们要实现的功能函数
3.实现file_operations结构体内定义的功能函数
4.把file_operations结构体告诉内核:register_chrdev()
5.注册驱动程序,再入口函数中注册,安装设备驱动时,会首先调用这个函数
6.出口函数,卸载驱动程序时,会调用这个函数,在出口函数中卸载驱动,unregister_chrdev()
7.创建设备信息,比如设备节点,设备名称:class_create(), device_create(),便于对设备进行操作
开发板与ULN2003步进电机
这里我用的是stm32mp157开发板,操作系统内核为Linux5.4,给我们预留了一些可供我们使用的GPIO引脚,我这里是GPIOA5、GPI