一.GPIO的输入操作
GPIO输入检测主要分为3步:1.在RCC中开启GPIO的时钟 2.初始化GPIO端口(包括端口速度,模式,引脚)3.调用GPIO的GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)函数,具体如下:
1.开启RCC中GPIO端口时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
参数RCC_APB2Periph为RCC中APB2ENR寄存器对应的GPIO所处的位,NewState为打开(ENABLE)或者关闭(DISABLE)
2.初始化GPIO的引脚
(1)首先要新建一个GPIO_InitTypeDef类型的变量,例如GPIO_InitTypeDef GPIO_InitStructure
(2)然后赋值对应的引脚号,输入输出模式,速率
GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN; //确定第几个引脚
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING //确定模式
(3)调用void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)初始化
第一参数是对应的端口ABCDE。。。,第二个参数是2中的结构体
3.读取GPIO口状态
GPIO的GPIO_ReadInputDataBit(GPIOx,GPIO_Pin);
二.GPIO的输出操作
GPIO输出控制主要分为3步:1.在RCC中开启GPIO的时钟 2.初始化GPIO端口(包括端口速度,模式,引脚)3.调用GPIO的SET和RESET函数开关,具体如下:
1.开启RCC中GPIO端口时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
RCC->APB2ENR |= RCC_APB2Periph;
}
else
{
RCC->APB2ENR &= ~RCC_APB2Periph;
}
}
参数RCC_APB2Periph为RCC中APB2ENR寄存器对应的GPIO所处的位,NewState为打开(ENABLE)或者关闭(DISABLE)
2.初始化GPIO的引脚
1.首先要新建一个GPIO_InitTypeDef类型的变量,例如GPIO_InitTypeDef GPIO_InitStructure
2.然后赋值对应的引脚号,输入输出模式,速率
GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN; //确定第几个引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //确定模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//确定速率
3.调用函数初始化GPIO
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct
第一参数是对应的端口ABCDE。。。,第二个参数是2中的结构体
3.控制GPIO输出
GPIO_ResetBits(LED_G_PORT,LED_G_PIN);
GPIO_SetBits(LED_G_PORT,LED_G_PIN);
第一个参数是端口号,第二个是引脚号
三.烧写程序
1.将编译器里的reset and run勾上
2.将pack前的勾去掉
四.编译器如何擦除程序
菜单栏Flash-erase