新手学习32求助

2019-07-21 00:04发布

如果我想将某个引脚定义成自己想要的名称怎么办
还有,如果我想拉低或者拉高某个引脚,可以直接赋值0或1吗


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
xkwy
1楼-- · 2019-07-21 04:30
你是想实现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; 即可控制引脚高电平还是低电平了
hpeng1874
2楼-- · 2019-07-21 05:06
看跑马灯例程
kinglucifun
3楼-- · 2019-07-21 05:22
 精彩回答 2  元偷偷看……
openedvadmin
4楼-- · 2019-07-21 06:40
 精彩回答 2  元偷偷看……
济世良驹
5楼-- · 2019-07-21 08:10
引脚定义成自己的名称宏定义就能实现,对于引脚高低的设置,寄存去配置和库函数都可以实现
汪桐生
6楼-- · 2019-07-21 13:15
使用define宏定义,第一节课的跑马灯不就有这个用法吗,看寄存器版本的手册

一周热门 更多>