OpenEdv-开源电子网

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

奇怪的初始化结构,你们懂么?

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-7-16
在线时间
2 小时
发表于 2017-7-19 14:04:45 | 显示全部楼层 |阅读模式
下面是oled初始化的一段程序:
                                          在#if OLED_MODE==1 下面的这段程序,
                                                                        它C口赋值0xff怎么就是推挽输出了?
                                                                           如果说他是借用一开始GPIO初始化部分的程序
                                                                         那他怎么能初始化的整个C口,而不是3,6两个口呢?
                                              GPIO_InitStructure.GPIO_Pin =0xFF; //PC0~7 OUT 推挽输出
                                              GPIO_Init(GPIOC, &GPIO_InitStructure);
                                              GPIO_SetBits(GPIOC,0xFF); //PC0~7 输出高

void OLED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|
RCC_APB2Periph_GPIOG, ENABLE);//使能 PC,D,G 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_6;  //PD3,PD6 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度 50MHz
GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化 GPIOD3,6
GPIO_SetBits(GPIOD,GPIO_Pin_3|GPIO_Pin_6);  //PD3,PD6 输出高
#if OLED_MODE==1
GPIO_InitStructure.GPIO_Pin =0xFF; //PC0~7 OUT 推挽输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC,0xFF); //PC0~7 输出高
//PG13,14,15 OUT 推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_Init(GPIOG, &GPIO_InitStructure);
//PG13,14,15 OUT 输出高
GPIO_SetBits(GPIOG,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);

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

使用道具 举报

13

主题

175

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2016-4-30
在线时间
141 小时
发表于 2017-7-19 14:59:27 | 显示全部楼层
长知识了、、、虽然这样可读性差点。。但好像确实方便一点。。0xff就是配置IO口GPIO0~7啊、推挽输出是因为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2017-7-6
在线时间
45 小时
发表于 2017-7-20 08:37:02 | 显示全部楼层
程序里面在给PD3,PD6设定了GPIO_InitStructure.GPIO_Mode,下面给PC0~7初始化的时候用的也是GPIO_InitStructure,只要不清空GPIO_InitStructure或者改变GPIO_Mode,GPIO_Mode的值就会跟随最后一次的赋值。
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-7-16
在线时间
2 小时
 楼主| 发表于 2017-7-21 13:56:52 | 显示全部楼层
苻轩宇1993 发表于 2017-7-20 08:37
程序里面在给PD3,PD6设定了GPIO_InitStructure.GPIO_Mode,下面给PC0~7初始化的时候用的也是GPIO_InitStruc ...

谢谢,明白了。
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-7-16
在线时间
2 小时
 楼主| 发表于 2017-7-21 13:58:02 | 显示全部楼层
嗯。0xff,这个我看了下gpio的寄存器定义明白了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-23 03:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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