中级会员
 
- 积分
- 304
- 金钱
- 304
- 注册时间
- 2018-3-12
- 在线时间
- 53 小时
|
1金钱
#include "stm32f10x.h" //跑马灯例程
void Delay(u32 count) //延时函数
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //结构体变量定义
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //B与E口使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //
GPIO_Init(GPIOB, &GPIO_InitStructure); //
GPIO_SetBits(GPIOB,GPIO_Pin_5); //
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5
GPIO_Init(GPIOE, &GPIO_InitStructure); //
GPIO_SetBits(GPIOE,GPIO_Pin_5); //
while(1)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
Delay(3000000);
}
}
请问RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //B与E口使能
这是同时使能B与E口时钟,而
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5
却是操作的PB.5
问题1:为什么不是操作的PE.5?理由是什么。
问题2:请问32单片机在编写程序,也即调用函数的时候,本质上我理解为操作寄存器,一般的流程是什么?
比如51单片机框架流程是:先对某个口的寄存器进行配置,然后再处理数据。
|
最佳答案
查看完整内容[请看2#楼]
问题1:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //B与E口使能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //
GPIO_Init(GPIOB, &GPIO_InitStructure); //
上边才是完整地操作PB5。
问题2:流程上都是先对寄存器配置,然后再处理;不过32 ...
|