高电平弱驱动,低电平的强驱动
操作stm32的GPIO口:
1.使用RCC开启GPIO时钟
2.GPIO.Init函数初始化GPIO
3.使用输入输出函数控
RCC 库函数
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
制GPIO口
GPIO库函数
ENABLE or DISABLE
电灯用的推挽输出, GPIO_Mode_Out_PP = 0x10,
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//变为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//端口为低电平
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//前两个指定端口,第三个根据相应的参数指定端口
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
GPIO_ResetBits(GPIOA, GPIO_Pin_0);意思是把PA0输出为0,也就是低电平。
GPIO_SetBits(GPIOA, GPIO_Pin_0);意思是把PA0输出为1,也就是高电平。
LED闪烁
#include "stm32f10x.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStruture;
GPIO_InitStruture.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruture.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruture.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruture);
while (1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_0);
Delay_ms(500);
GPIO_SetBits(GPIOA, GPIO_Pin_0);
Delay_ms(500);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);//点亮LED
Delay_ms(500);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);//熄灭LED
Delay_ms(500);
}
}