当前位置:网站首页>理论上的嵌入式跑马灯
理论上的嵌入式跑马灯
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);
}
边栏推荐
猜你喜欢

运行 npm run xxx 如何触发构建命令以及启动Node服务等功能?

【特征选取】计算数据点曲率

pta a.1030的dijkstra+DFS方法

Haproxy服务监控

npm run dev/serve 时报错

Browser multi-threaded off-screen rendering, compression and packaging scheme

【源码解读】火爆的二舅币真的跑路了吗?

令人愉快的 Nuxt3 教程 (一): 应用的创建与配置

Sqli-labs-master shooting range 1-23 customs clearance detailed tutorial (basic)

磁盘空间管理
随机推荐
vivado遇到的问题
uni-app 滚动到顶部/指定位置
-一尺之棰-
pta a.1030的dijkstra+DFS方法
Playing with Markdown(2) - Extraction and Manipulation of Abstract Syntax Trees
用pulp库解决运输问题【详细】
Modelarts第一次培训
【解读合约审计】Harmony的跨链桥是如何被盗一亿美金的?
运行 npm run xxx 如何触发构建命令以及启动Node服务等功能?
npm run dev/serve 时报错
【扫雷】多方法超详细 7.28
陆运信息系统——班列项目总结(一)
`monorepo` 中 `hoist` 机制导致加载配置文件路径的变化
浏览器中的 preview 和 response 的值不一致
【函数与递归】7.19
HoloLens联合发明人:打造理想的全天AR需要解决这些问题
【源码解读】你买的NFT到底是什么?
BeanFactory和FactoryBean的区别
当奈飞的NFT忘记了web2的业务安全
-飞机大战-