野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15603|回复: 6

火哥求指点啊

[复制链接]
发表于 2014-12-1 14:51:50 | 显示全部楼层 |阅读模式
一直学的是火哥的库函数形式,今天看师兄的程序瞬间晕倒,水平还是不够啊,求助!
首先:#define LED0 PBout(5)// PB5
         #define LED1 PEout(5)// PE5       
         #define DCC PEout(4)// PE5       
         #define ACC PEout(6)// PE11。我跟踪PBout(5):#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出                                                                          #define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入。然后在跟踪 BIT_ADDR(GPIOB_IDR_Addr,n):
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))   他同时也定义了基址:#define GPIOB_ODR_Addr    (GPIOB_BASE+12)。
我理解是他要在输入寄存器IDR和输出寄存器ODR上操作PB5、PE5输入输出数据,理解不了的是PBout(5)中5的数值变化对输出有什么影响啊?寄存器操作形式完全晕了,求指点!
回复

使用道具 举报

 楼主| 发表于 2014-12-1 14:57:40 | 显示全部楼层
由于做一个项目,需要学习修改师兄的程序,现在没看懂,希望大神们指点,BIT_ADDR(GPIOB_IDR_Addr,n)我理解是在B端口的输入数据寄存器输入n,不知道对不对?谢谢指教!
回复 支持 反对

使用道具 举报

发表于 2014-12-1 19:43:05 | 显示全部楼层
:'(:'(:'(:'(:'(:'(
回复 支持 反对

使用道具 举报

发表于 2014-12-2 08:55:23 | 显示全部楼层
神一样的师兄
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 09:06:07 | 显示全部楼层

哎  寄存器和库开发还是有差别,不好理解!位带操作过难!
回复 支持 反对

使用道具 举报

发表于 2014-12-2 09:40:01 | 显示全部楼层
本帖最后由 11kxmx 于 2014-12-2 09:45 编辑
CDGTDQ 发表于 2014-12-1 14:57
由于做一个项目,需要学习修改师兄的程序,现在没看懂,希望大神们指点,BIT_ADDR(GPIOB_IDR_Addr,n)我理解 ...


不对的,是PB口的第n引脚作为输出,使用时
PBout(5) =1 ,即PB5引脚输出高电平
作输入时可用if(PAin(6)==1)来判断PA6引脚的状态
这种方法在原子钟的教程及Cortex-M3权威指南里介绍比较详细
我没买野火开发板前一直在看原子钟的视频和资料
买了野火开发板后有时还看原子钟的视频和资料,来比较2家之间程序的实现方法有何不同

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-2 10:20:16 | 显示全部楼层
11kxmx 发表于 2014-12-2 09:40
不对的,是PB口的第n引脚作为输出,使用时
PBout(5) =1 ,即PB5引脚输出高电平
作输入时可用if(PAin ...

谢谢啊  理解了  主要是那一堆偏移地址和强制转换晕头了  刚刚查了资料总算理解一些了!非常感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 00:06 , Processed in 0.028575 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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