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

2019-07-20 13:17发布

下面是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);

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
执迷
1楼-- · 2019-07-20 17:45
长知识了、、、虽然这样可读性差点。。但好像确实方便一点。。0xff就是配置IO口GPIO0~7啊、推挽输出是因为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
苻轩宇1993
2楼-- · 2019-07-20 22:59
 精彩回答 2  元偷偷看……
wzy96321
3楼-- · 2019-07-21 01:40
 精彩回答 2  元偷偷看……
wzy96321
4楼-- · 2019-07-21 05:49
嗯。0xff,这个我看了下gpio的寄存器定义明白了

一周热门 更多>