搜索
bottom↓
回复: 8

如何使用HWREG设置端口为输入,小马哥,帮帮我

[复制链接]

出0入0汤圆

发表于 2010-9-28 15:36:02 | 显示全部楼层 |阅读模式
在用bootloader中一段程序,
HWREG(FORCED_UPDATE_PORT + GPIO_O_DEN) |= 1 << FORCED_UPDATE_PIN;
//这个是设置端口中的一个引脚为输入,
    //
    // Wait a while before reading the pin.
    //
    Delay(1000);
//延时等待
    //
    // Check the pin to see if an update is being requested.
    //
    if(HWREG(FORCED_UPDATE_PORT + (1 << (FORCED_UPDATE_PIN + 2))) ==
       (FORCED_UPDATE_POLARITY << FORCED_UPDATE_PIN))//这句很难懂,感觉里面的寄存器地址不对,大家帮我看看吧,这句应该是想当按键按下时即数据为0时,return(1)
    {
        return(1);
    }

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-9-28 17:17:32 | 显示全部楼层
设置为输入的话,应该使用 HWREG(FORCED_UPDATE_PORT + GPIO_O_DIR) |= 1 << FORCED_UPDATE_PIN;

    if(HWREG(FORCED_UPDATE_PORT + (1 << (FORCED_UPDATE_PIN + 2))) ==
       (FORCED_UPDATE_POLARITY << FORCED_UPDATE_PIN))//
这句话的意思是判断升级管脚为高还是为低,是否升级还要看FORCED_UPDATE_POLARITY的定义,如果FORCED_UPDATE_POLARITY 为0,则升级管脚为低时强制升级,反之,如果FORCED_UPDATE_POLARITY为1,则升级管脚为高电平时强制升级。

(HWREG(FORCED_UPDATE_PORT + (1 << (FORCED_UPDATE_PIN + 2)))这里省略了GPIO_O_DATA(因为GPIO_O_DATA的值为0),标准的写法应该是 (HWREG(FORCED_UPDATE_PORT + GPIO_O_DATA + (1 << (FORCED_UPDATE_PIN + 2)))

出0入0汤圆

 楼主| 发表于 2010-9-29 10:07:31 | 显示全部楼层
回复【1楼】jkhu 永远的不知
-----------------------------------------------------------------------

想问下,你有没有试过这个程序是否可以用,我试过了还是不行啊?(HWREG(FORCED_UPDATE_PORT + (1 << (FORCED_UPDATE_PIN + 2)))这句话(FORCED_UPDATE_PORT + (1 << (FORCED_UPDATE_PIN + 2))应该先用这一步吧?那不是地址不对了?

出0入0汤圆

 楼主| 发表于 2010-9-29 10:33:07 | 显示全部楼层
用按键来判断是否更新,总算可以了,哎,弄死了。。

出0入0汤圆

发表于 2010-9-29 10:58:39 | 显示全部楼层
回复【3楼】chen20061084
用按键来判断是否更新,总算可以了,哎,弄死了。。
-----------------------------------------------------------------------
额,那两个boot_demo1,2的例子里吧,可以用的,嘿嘿

出0入0汤圆

发表于 2010-10-8 13:16:32 | 显示全部楼层
回复【2楼】chen20061084
回复【1楼】jkhu 永远的不知
-----------------------------------------------------------------------
想问下,你有没有试过这个程序是否可以用,我试过了还是不行啊?(hwreg(forced_update_port + (1 << (forced_update_pin + 2)))这句话(forced_update_port + (1 << (forced_update_pin + 2))应该先用这一步吧?那不是地址不对了?

-----------------------------------------------------------------------

我都用过,没问题,没太看懂,你说地址不对是指那个地址?

出0入0汤圆

发表于 2010-10-8 13:18:16 | 显示全部楼层
回复【3楼】chen20061084
用按键来判断是否更新,总算可以了,哎,弄死了。。
-----------------------------------------------------------------------

怎么解决了?把你遇到的问题和经验分享下,呵呵

出10入0汤圆

发表于 2010-10-18 14:20:03 | 显示全部楼层
回复【3楼】chen20061084
用按键来判断是否更新,总算可以了,哎,弄死了。。
-----------------------------------------------------------------------

应该说一下怎样做到的??

出0入0汤圆

 楼主| 发表于 2010-12-1 10:26:22 | 显示全部楼层
好久没上这个网站了,有空我把它更新上去。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 01:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表