字符驱动之LED(二:实现点灯功能)

news/2024/7/3 20:07:45 标签: 嵌入式
1.首先在驱动文件开头定义用于保存带操作IOK口的unsigned long变量,并且要用volatile修饰。

  volatile unsigned long *gpfcon = NULL;
  volatile unsigned long *gpfdat = NULL;

 

2.在入口函数中对寄存器进行映射。

   gpfcon = (volatile unsigned long *)ioremap(0x56000050, 16);

//该函数的第一个参数为物理起始地址,第二个参数位长度。

  gpfdat = gpfcon + 1;

 

3.在入口函数中建立了映射,就要在出口函数中取消映射。

  iounremap(gpfcon);

 

4.要在open函数中配置引脚。

 *gpfcon &= ~((0x3<<(4*2)) | (0x3<<(5*2)) | (0x3<<(6*2)));
 *gpfcon |= ((0x1<<(4*2)) | (0x1<<(5*2)) | (0x1<<(6*2)));
 return 0;

 

5.怎样根据应用程序的参数来控制外设(LED)?

  write(fd,&val,4);

  第一个参数是打开的文件,fd = open("xxx");

  第二个参数是&val相当于驱动write函数的buff。

  第三个参数是长度。

 write函数格式定义如下:

static ssize_t first_drv_write(struct file *file,const char __user *buf,size_t count,loff_t *ppos)

{

  copy_from_user(&val,buf,count);

  通过copy_from_user这个函数将用户空间的数据拷贝到内核空间中。

  copy_to_user(&val,buf,count);

  将内核空间的数据拷贝到用户空间。

  然后对val的值进行判断

  if(val == 1)

  {

    //点灯

  }

  else

  {

    //熄灯

  }

}

 

 测试程序如下:

int main(int argc,char **argv)

{

   int fd;

  int val = 1;

  fd = open("/dev/xyz",O_RDWR);

   if(fd < 0)

    printf("file can't open!\n");

  if(argc != 2)

    printf("two parameter\n");

  write(xxx);

 }

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/stm32f4/p/8330937.html


http://www.niftyadmin.cn/n/709971.html

相关文章

cubesviewer第一篇

2019独角兽企业重金招聘Python工程师标准>>> 1. It is powered by the SQLAlchemy which supports multiple databases including PostgreSQL, MySQL, Oracle, simple sqlite and many others. 2. Cubes install: url: http://cubes.readthedocs.io/en/v1.0.1…

32 模拟登录

32 模拟登录 作者: 江宝钏时间限制: 2S章节: 字符串 问题描述 : 编写程序模拟简单的密码登录&#xff08;正确的密码是123456&#xff09;&#xff0c;首先从键盘输入用户名&#xff08;用户名随意&#xff0c;不超过10个字符&#xff09; 然后输入密码&#xff0c;若密码正…

矩阵的旋转C语言

问题描述 对于任意一个N*N的矩阵请依次按顺时针&#xff0c;逆时针&#xff0c;顺或逆180输出。 解题思路 对于矩阵的旋转只要熟练运用二维数组&#xff0c;其实它就是非常水的一道题。 #include<stdio.h> int main() {int a[40][40];int i,j,n;while(scanf("%d&qu…

31 输出米字形

31 输出米字形 作者: Turbo时间限制: 1S章节: 基本练习&#xff08;数组&#xff09; 问题描述 : 输入说明 : 输出说明 : 输入范例 : 4 输出范例 : A…A…A .B.B.B. …CCC… ABCDCBA …CCC… .B.B.B. A…A…A import java.util.Scanner;public class test_31 {/*** 31 …

debian apt-get联网安装mysql服务

安装mysql和卸载mysql 1.安装数据库&#xff1a;sudo apt-get install mysql-server 安装过程中需要设置密码。 2.安装客户端&#xff1a;sudo apt-get install mysql-client 3.登录MySQL&#xff1a;mysql -u root -p 4.配置文件&#xff1a;/etc/mysql/my.cnf a.设…

30 特殊的矩阵运算

30 特殊的矩阵运算 作者: 卢婷时间限制: 1S章节: 二维数组 问题描述 : 输入m个方阵&#xff0c;方阵的元素是非0整数。对于n阶方阵A&#xff0c;明明现在需要进行特殊的运算。 例如&#xff1a; A: 5 1 3 5 8 7 2 6 9 方阵A有两条对角线&#xff1a;从左上角到右下角的…

打印菱形C语言

问题描述 题目描述 输出一个n行(n为奇数)的菱形且该菱形由输入的字符ch构成&#xff0c;如输入的n7&#xff0c;ch*&#xff0c;输出以下图案&#xff1a; * 如输入的n5&#xff0c;ch?&#xff0c;输出以下图案&#xff1a; ? ??? ??? ??? ? 输入 输入若干组数…

字符串查找算法--R向单词查找树和三向单词查找树

2019独角兽企业重金招聘Python工程师标准>>> 字符串查找算法分析 算法对比&#xff1a; 算法&#xff08;数据结构&#xff09;优点二叉查找树&#xff08;BST&#xff09;适用于随机排列的键2-3树查找&#xff08;红黑树&#xff09;有性能保证线性探测法&#xff…