OpenEdv-开源电子网

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

寄存器编程该如何编写

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2013-1-20
在线时间
0 小时
发表于 2013-1-20 14:20:20 | 显示全部楼层 |阅读模式

用寄存器如何编程
51只需要包含reg52.h就行了,里面包含了各个寄存器地址,如TI=0xff,直接操作就好了

但是STM32感觉好乱,这些寄存器到底定义在哪里,下载了库函数,但是感觉好像寄存器定义都在各自的.h头文件在,,并且还有结构体,像是特地为库函数写的,不单一,,有没有直接像REG.52那样的文件,,还是自己要写一个,那么该怎么写,没看到SFR之类的定义


下面这段代码是哪个头文件下的
#define GPIOE_CRL       (*(volatile unsigned long *)0x40011800) //端口E配置低寄存器
#define GPIOE_CRH       (*(volatile unsigned long *)0x40011804) //端口E配置高寄存器
#define GPIOE_IDR    (*(volatile unsigned long *)0x40011808) //端口E输入数据寄存器
#define GPIOE_ODR    (*(volatile unsigned long *)0x4001180c) //端口E输出数据寄存
#define GPIOE_BSRR    (*(volatile unsigned long *)0x40011810) //端口E位设置/复位寄存器
#define GPIOE_BRR    (*(volatile unsigned long *)0x40011814) //端口E位复位寄存
#define GPIOE_LCKR      (*(volatile unsigned long *)0x40011818) //端口E配置锁定寄存器
//0x4001 1400 - 0x4001 17FF GPIOD//////////////////////////////
#define GPIOD_CRL       (*(volatile unsigned long *)0x40011400) //端口D配置低寄存器
#define GPIOD_CRH       (*(volatile unsigned long *)0x40011404) //端口D配置高寄存器
#define GPIOD_IDR    (*(volatile unsigned long *)0x40011408) //端口D输入数据寄存器
#define GPIOD_ODR    (*(volatile unsigned long *)0x4001140c) //端口D输出数据寄存
#define GPIOD_BSRR    (*(volatile unsigned long *)0x40011410) //端口D位设置/复位寄存器
#define GPIOD_BRR    (*(volatile unsigned long *)0x40011414) //端口D位复位寄存
#define GPIOD_LCKR      (*(volatile unsigned long *)0x40011418) //端口D配置锁定寄存器
//0x4001 1000 - 0x4001 13FF GPIOC//////////////////////////////


能不能直接操作比如GPIOE_CRL=0X............,直接操作,像51那样

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-1-20 14:39:06 | 显示全部楼层
为什么不自己软件仿真试一下?
https://github.com/roxma
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2013-1-20 15:05:04 | 显示全部楼层
在这儿   stm32f10x_map.h


尼克以直接点击一个GPIOA,然后F12,一路狂F12就可以了
努力,前进。
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2013-1-20 15:06:23 | 显示全部楼层
GPIOA这种属于指针结构体,所以不能直接等于一个数,而要把这个数转化成地址,就可以
努力,前进。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 21:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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