登录
注册
一键加入QQ群
友善之臂官方网站
首 页
联系我们
淘宝店铺
维基教程
资料下载
搜索帖子!
NanoPC-T2
Core4418
NanoPC-T3 Plus
Core6818
NanoPi-M4B
NanoPC-T4
NanoPC-T6
NanoPi-NEO
NanoPi-NEO Core
NanoPi-NEO Air
NanoPi-M1 Plus
NanoPi-Duo2
NanoPi-NEO3
核心板:
Smart210
Tiny210
Smart4418
Smart6818
SOM-RK3399V2
CM3588(新品)
路由器:
R1
R1S
R2S
R2S Plus
R2C Plus
R4S
R5S
R5C
R6C
R6S
热门版块:
友善之臂最新动态
开发板实战手册及教程
站点服务
Linux技术交流区
站务管理与公告
裸机程序和微型OS
默认风格
用户中心首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
积分管理
积分转换
特殊组购买
收藏夹
我的主题
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
个人首页
我的收藏
好友近况
友善之家
裸机程序和微型OS
终于实现了6410的按键中断
友友粉丝快线
开发板销售中心
嵌入式最新资讯
友善之臂最新动态
友善之臂官方客服中心
开发板实战手册及教程
应用方案和定制开发
NanoPi 交流与讨论
NanoPi 玩家交流区
ROM发布区
硬软DIY及开发
嵌入式交流与讨论
Android技术交流区
Linux技术交流区
U-boot技术交流区
WinCE技术交流区
Ubuntu技术交流区
裸机程序和微型OS
OpenWRT讨论区
开发板硬件讨论区
相关资料下载及使用技巧
站点服务
二手交易区
我的论坛我的贴
站务管理与公告
上一主题
下一主题
新 帖
主题 : 终于实现了6410的按键中断
复制链接
|
浏览器收藏
|
打印
venkee.com
级别: 侠客
作者资料
发送短消息
加为好友
UID:
39247
精华:
2
发帖:
51
金钱:
355 两
威望:
71 点
贡献值:
2 点
综合积分:
142 分
注册时间:
2011-03-07
最后登录:
2015-05-31
楼主
发表于: 2011-05-14 14:09
全看
|
小
中
大
终于实现了6410的按键中断
管理提醒:
本帖被 xoom 执行加亮操作(2011-05-14)
复制代码
6410的向量中断模式给我们带来很多方便,我们可以不再使用软件来安排我的中断向量表
这次试验完全试验了在内存中跑的中断程序
1、初始化代码可以很简短:
INCLUDE s3c6410.inc
INCLUDE image_cfg.inc
INCLUDE MemParam_mDDR.inc
IMPORT _main ; C entrypoint for Steppingstone loader.
;------------------------------------------------------------------------------
;
; Memory Start Entry
;
; 内存里直接启动时入口
;
;------------------------------------------------------------------------------
PRESERVE8 //因为我用的是rvds4,这句必不可少
AREA Init, CODE, READONLY
global MemStart
ENTRY
MemStart
mrc p15,0,r0,c1,c0,0
orr r0,r0,#(1<<24)
mcr p15,0,r0,c1,c0,0
b _main
end
2、main.C:
#include "utils.h"
#include "s3c6410_addr.h"
#include "interrupt.h"
void key_init(void)
{
rGPNCON = rGPNCON & ~(0xff << 0) | (0xaa << 0);//eint
rEINT0CON0 = rEINT0CON0 | (0x22 << 0);//both edge
rEINT0MASK = rEINT0MASK & ~(0xf);
}
void key_isr(void) __irq
{
if(rEINT0PEND & 0x1)
Uart_Printf("EINT0 is occurred\n");
else if(rEINT0PEND & 0x2)
Uart_Printf("EINT1 is occurred\n");
else if(rEINT0PEND & 0x4)
Uart_Printf("EINT2 is occurred\n");
else if(rEINT0PEND & 0x8)
Uart_Printf("EINT3 is occurred\n");
//Uart_Printf("key interrupt occurred\n");
rEINT0PEND &= ~(16);//以下两句我不是很明白,但毕竟它工作了
INTC_ClearVectAddr();
}
void _main(void)
{
Uart_Init();
Port_Init();
key_init();
INTC_Init();
INTC_SetIntISR(0, key_isr);
INTC_Enable(0);
while(1);
}
我用的tiny6410,光盘里面用说到用jlink来调试的开发文档附带了源代码,把头文件加上去就可以了
ro_base:0x50000000 //代码基址
fisrt =startup.o(Init) //程序入口
继续研究用key来控制等的亮暗,童鞋们也给点力吧,我很多不明白,需要大家的指点
[ 此帖被venkee.com在2011-06-21 23:11重新编辑 ]
顶端
回复
引用
分享
zuiyingxilou
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
38174
精华:
0
发帖:
7
金钱:
35 两
威望:
7 点
贡献值:
0 点
综合积分:
14 分
注册时间:
2011-02-22
最后登录:
2013-10-31
1楼
发表于: 2011-06-06 19:29
全看
|
小
中
大
你好,我最近在学习裸机程序,能不能加QQ呢?以后多交流!我的QQ:403752830
顶端
回复
引用
分享
上一主题
下一主题
友善之家
裸机程序和微型OS
http://aiothome.net
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问