求教 学习STM32 GPIO_init底层程序

求教我刚开始学习STM32在看GPIO_init底层程序的时候pinmask=((uint32_t)0x0F)<<pos;tmpreg&=~pinmask;tmpreg|... 求教 我刚开始学习STM32 在看GPIO_init底层程序的时候
pinmask = ((uint32_t)0x0F) << pos;
tmpreg &= ~pinmask;
tmpreg |= (currentmode << pos);
这句话先把要操作的寄存器先清零了 在赋上输出速度的值
那tmpreg这个值的CNFY[1:0]不就一直是0.0(通用推挽输出)吗
那怎么设置其它模式??
展开
 我来答
可爱的以下克上
2017-11-05 · TA获得超过217个赞
知道答主
回答量:74
采纳率:41%
帮助的人:32.9万
展开全部
用库 GPIO_SetBits(GPIOA,GPIO_Pin_0) \\PA0 = 1
GPIO_ResetBits(GPIOA,GPIO_Pin_0) \\PA0 = 0

简单要更简单用做宏定义

#define PA0(a) if (a) \
GPIO_SetBits(GPIOA,GPIO_Pin_0);\
else \
GPIO_ResetBits(GPIOA,GPIO_Pin_0)

用候
PA0(1) //PA0 = 1
PA0(0) //PA0 = 0

面再加宏定义
#define ON 0
#define OFF 1

用候
PA0(OFF) //PA0 = 1
PA0(ON) //PA0 = 0

看程序都直观!!!

再加初始化 GPIOA口代码
void LED_GPIO_Config(void)
{
/*定义GPIO_InitTypeDef类型结构体*/
GPIO_InitTypeDef GPIO_InitStructure;
/*启GPIOC外设钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
/*选择要控制GPIOA引脚*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4 | GPIO_Pin_5;
/*设置引脚模式通用推挽输*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/*设置引脚速率50MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*调用库函数初始化GPIOA*/
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式