OpenEdv-开源电子网

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

新手学习32求助

[复制链接]

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1246
金钱
1246
注册时间
2015-7-14
在线时间
102 小时
发表于 2016-1-16 17:45:03 | 显示全部楼层 |阅读模式
1金钱
如果我想将某个引脚定义成自己想要的名称怎么办
还有,如果我想拉低或者拉高某个引脚,可以直接赋值0或1吗


最佳答案

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

你是想实现51里sbit相同的功能吧? 使用位带操作可以。 首先要有一个宏: [mw_shl_code=c,true]# define BITBAND_REG(Reg,Bit) (*((uint32_t volatile*)(0x42000000u + (32u*((uint32_t)&(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))))[/mw_shl_code] 使用举例: 定义LED为PD7 [mw_shl_code=c,true]# define LED BITBAND_REG(GPIOD->ODR, 7)[/mw_shl_code] 当PD7的引脚初始化为GPIO输出后(51不需要 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-1-16 17:45:04 | 显示全部楼层
你是想实现51里sbit相同的功能吧?

使用位带操作可以。

首先要有一个宏:
[mw_shl_code=c,true]# define BITBAND_REG(Reg,Bit) (*((uint32_t volatile*)(0x42000000u + (32u*((uint32_t)&(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))))[/mw_shl_code]

使用举例:
定义LED为PD7
[mw_shl_code=c,true]# define LED BITBAND_REG(GPIOD->ODR, 7)[/mw_shl_code]

当PD7的引脚初始化为GPIO输出后(51不需要,但STM32必须要有),
只要写LED = 0; 或LED = 1; 即可控制引脚高电平还是低电平了
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

794

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
1502
金钱
1502
注册时间
2015-3-3
在线时间
460 小时
发表于 2016-1-16 18:09:52 | 显示全部楼层
看跑马灯例程
回复

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1246
金钱
1246
注册时间
2015-7-14
在线时间
102 小时
 楼主| 发表于 2016-1-16 20:53:17 | 显示全部楼层
我看了,可是我自己写的时候就不行
回复

使用道具 举报

306

主题

1426

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
7871
金钱
7871
注册时间
2015-10-15
在线时间
2874 小时
发表于 2016-1-16 22:47:58 | 显示全部楼层
看懂了就可以应用自如了。。。只是个名字而已,随意你怎么定义名字
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

217

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2015-4-1
在线时间
34 小时
发表于 2016-1-17 11:54:21 | 显示全部楼层
引脚定义成自己的名称宏定义就能实现,对于引脚高低的设置,寄存去配置和库函数都可以实现
一直在路上,一直在成长。
回复

使用道具 举报

41

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
949
金钱
949
注册时间
2015-10-25
在线时间
131 小时
发表于 2016-1-17 12:56:01 来自手机 | 显示全部楼层
使用define宏定义,第一节课的跑马灯不就有这个用法吗,看寄存器版本的手册
回复

使用道具 举报

4

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1246
金钱
1246
注册时间
2015-7-14
在线时间
102 小时
 楼主| 发表于 2016-1-19 20:32:04 | 显示全部楼层
谢谢大家
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 00:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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