当前位置:网站首页>理论上的嵌入式跑马灯
理论上的嵌入式跑马灯
2022-08-03 05:21:00 【物腐虫生】
跑马灯代码修改部分
驱动代码修改部分:
/* 功能:点亮第i个LED灯 参数:无符号整型变量iLed,表示第i个LED灯 返回值:无 */
void AllLedOn(int iLed)
{
//读出端口M数据寄存器(S3C64XX_GPKDAT)值,修改并写回相关端口寄存器
//add your code here
unsigned int tmp;
tmp =readl(S3C64XX_GPMDAT);
tmp &= ~(0X1<<iLed);
printk("iLedOn---S3C64XX_GPMDAT=0X%0x\n",tmp);
writel(tmp,S3C64XX_GPMDAT);
}
/* 功能:熄灭第i个LED灯 参数:无符号整型变量iLed,表示第i个LED灯 返回值:无 */
void AllLedOff(int iLed)
{
//读出端口M数据寄存器(S3C64XX_GPKDAT)值,修改并写回相关端口寄存器
//add your code here
unsigned int tmp;
tmp =readl(S3C64XX_GPMDAT);
tmp &= ~(0X1<<iLed);
tmp |= (0X1<<iLed);
printk("iLedOff---S3C64XX_GPMDAT=0X%0x\n",tmp);
writel(tmp,S3C64XX_GPMDAT);
}
static long s3c6410_led_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int iLed;
switch(cmd)
{
case ON:
//开启LED跑马灯
AllLedOn(0x0);
for(iLed=0x1;iLed<6;iLed++){
AllLedOff(iLed-1);
AllLedOn(iLed);
sleep(500);
}
break;
case OFF:
//熄灭LED跑马灯
for(iLed=0x0;iLed<6;iLed++)
AllLedOff(iLed);
break;
}
}
应用程序修改部分:
void main()
{
int fd,iLed;
fd=open("/dev/leddev" ,O_RDWR);
if(fd<0)
exit(1);
while(1)
{
//点亮LED跑马灯
ioctl(fd, ON);
}
close (fd);
}
或者将ioctl和主函数代码修改成如下形式2:(ON和OFF的驱动代码不做修改)
static long s3c6410_led_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int iLed;
switch(cmd)
{
case ON:
//开启LED跑马灯
AllLedOn(arg);
case OFF:
AllLedOff(arg);
break;
}
}
形式2对应应用程序:
void main()
{
int fd,iLed;
fd=open("/dev/leddev" ,O_RDWR);
if(fd<0)
exit(1);
while(1)
{
//点亮LED跑马灯
ioctl(fd,ON,0);
for(int i=0;i<6;i++)
{
ioctl(fd,ON,i);
ioctl(fd,OFF,i);
sleep(5);
}
}
close (fd);
}
边栏推荐
- 让小程序开发进入 `tailwind jit` 时代
- 【三子棋】7.25
- 3588. 排列与二进制
- NotImplementedError: file structure not yet supported
- Try setting CHROME_EXECUTABLE to a Chrome executable
- request.getParameter的结果为on
- 【DC-4靶场渗透】
- arm64麒麟安装paddlehub(国产化)注意事项
- Go (一) 基础部分2 -- if条件判断,for循环语句
- Delightful Nuxt3 Tutorial (1): Application Creation and Configuration
猜你喜欢
随机推荐
三角形个数
Apache2-XXE vulnerability penetration
Try setting CHROME_EXECUTABLE to a Chrome executable
-最低分-
Playing with Markdown(2) - Extraction and Manipulation of Abstract Syntax Trees
【DC-2靶场渗透】
网卡软中断过高问题优化总结
2.ROS通信机制
图的最短路径的核心——松弛技术
对页码的使用总结
【按位取反,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用,结构体】操作符后续+表达式求值(上)
web安全-命令执行漏洞
C语言简单实现扫雷小游戏
7.18(7)
关于semantic-ui的cdn失效问题(怎样通过本地引用semantic-ui)
Modelarts第一次培训
pta a.1003 的收获
Leetcode刷题——一些用层次遍历解决的问题(111. 二叉树的最小深度、104. 二叉树的最大深度、226. 翻转二叉树、剑指 Offer 27. 二叉树的镜像)
Sqli-labs-master靶场1-23关通关详细教程(基础篇)
Go (一) 基础部分2 -- if条件判断,for循环语句