初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2017-9-10
- 在线时间
- 5 小时
|
发表于 2018-7-20 17:34:55
|
显示全部楼层
本帖最后由 ywdV 于 2018-7-20 17:36 编辑
正在用L151上驱动DS18B20温度传感器 下面部分配置代码是网上找到的,然后我自己做了部分修改 现在器件工作不正常检测不到器件,我怀疑下面的地址定义不正确,还请众位帮忙看看,万分感谢
//IO方向设置
#define DS18B20_IO_IN() {GPIOA->MODER&=~(3<<(15*2));GPIOA->MODER|=0<<15*2;} //PA15输入模式
#define DS18B20_IO_OUT() {GPIOA->MODER&=~(3<<(15*2));GPIOA->MODER|=1<<15*2;} //PA15输出模式
////IO操作函数
#define DS18B20_DQ_OUT PAout(15) //数据端口 PA15
#define DS18B20_DQ_IN PAin(15) //数据端口 PA15
//IO口操作宏定义
#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))
//IO口地址映射
#define GPIOA_ODR_Addr (GPIOA_BASE+0x14) //0x4001080C
#define GPIOB_ODR_Addr (GPIOB_BASE+0x14) //0x40010C0C
#define GPIOC_ODR_Addr (GPIOC_BASE+0x14) //0x4001100C
#define GPIOD_ODR_Addr (GPIOD_BASE+0x14) //0x4001140C
#define GPIOE_ODR_Addr (GPIOE_BASE+0x14) //0x4001180C
#define GPIOF_ODR_Addr (GPIOF_BASE+0x14) //0x40011A0C
#define GPIOG_ODR_Addr (GPIOG_BASE+0x14) //0x40011E0C
#define GPIOA_IDR_Addr (GPIOA_BASE+0x10) //0x40020010
#define GPIOB_IDR_Addr (GPIOB_BASE+0x10) //0x40010C08
#define GPIOC_IDR_Addr (GPIOC_BASE+0x10) //0x40011008
#define GPIOD_IDR_Addr (GPIOD_BASE+0x10) //0x40011408
#define GPIOE_IDR_Addr (GPIOE_BASE+0x10) //0x40011808
#define GPIOF_IDR_Addr (GPIOF_BASE+0x10) //0x40011A08
#define GPIOG_IDR_Addr (GPIOG_BASE+0x10) //0x40011E08 |
|