OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6225|回复: 2

STM32L151 配置成51 IO模式操作 GPIOA_ODR_Addr 地址设置

[复制链接]

3

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-10-25
在线时间
2 小时
发表于 2015-4-29 21:54:37 | 显示全部楼层 |阅读模式
5金钱
STM32L151 手册里找不到GPIOA_ODR_Addr  GPIOA_IDR_Addr  地址   下面的是F4的,如果是STM32L151  20和16该改成多少尼 有哪位兄台知道的

#define GPIOA_ODR_Addr    (GPIOA_BASE+20) //0x40020014
#define GPIOB_ODR_Addr    (GPIOB_BASE+20) //0x40020414 
#define GPIOC_ODR_Addr    (GPIOC_BASE+20) //0x40020814 
#define GPIOD_ODR_Addr    (GPIOD_BASE+20) //0x40020C14 
#define GPIOE_ODR_Addr    (GPIOE_BASE+20) //0x40021014 
#define GPIOF_ODR_Addr    (GPIOF_BASE+20) //0x40021414    
#define GPIOG_ODR_Addr    (GPIOG_BASE+20) //0x40021814   
#define GPIOH_ODR_Addr    (GPIOH_BASE+20) //0x40021C14    
#define GPIOI_ODR_Addr    (GPIOI_BASE+20) //0x40022014     

#define GPIOA_IDR_Addr    (GPIOA_BASE+16) //0x40020010 
#define GPIOB_IDR_Addr    (GPIOB_BASE+16) //0x40020410 
#define GPIOC_IDR_Addr    (GPIOC_BASE+16) //0x40020810 
#define GPIOD_IDR_Addr    (GPIOD_BASE+16) //0x40020C10 
#define GPIOE_IDR_Addr    (GPIOE_BASE+16) //0x40021010 
#define GPIOF_IDR_Addr    (GPIOF_BASE+16) //0x40021410 
#define GPIOG_IDR_Addr    (GPIOG_BASE+16) //0x40021810 
#define GPIOH_IDR_Addr    (GPIOH_BASE+16) //0x40021C10 
#define GPIOI_IDR_Addr    (GPIOI_BASE+16) //0x40022010 

最佳答案

查看完整内容[请看2#楼]

去看芯片数据手册,上面有说这些地址的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-29 21:54:38 | 显示全部楼层
去看芯片数据手册,上面有说这些地址的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
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
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 02:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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