GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
1、上拉输入、下拉输入可以用来检测外部信号;例如,按键等;
2、浮空输入模式,由于输入阻抗较大,一般把这种模式用于标准通信协议的 I2C、USART 的接收端;
2.1 GPIO –5/56–
3、普通推挽输出模式一般应用在输出电平为 0 和 3.3V 的场合。而普通开漏输出模式一般应用在电平不匹配的场合,如需要输出 5V 的高电平,就需要在外部一个上拉电阻,电源为 5V,把 GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输
出 5V 电平。
4、对于相应的复用模式(复用输出来源片上外设),则是根据 GPIO 的复用功能来
选择,如 GPIO 的引脚用作串口的输出(USART/SPI/CAN),则使用复用推挽输出模式。
如果用在 I2C、SMBUS 这些需要线与功能的复用场合,就使用复用开漏模式。
5、在使用任何一种开漏模式时,都需要接上拉电阻。
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);//启动定时器
__HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_3,10); //产生PWM波,高电平时间为10us
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);//将PA0置高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);//将PA0置低电平
uint8_t pinstate = 0;
pinstate = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);//读取GPIO引脚函数
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//GPIO引脚翻转函数
HAL_UART_Transmit(&huart1, "Hello World!!", 13, 100);//串口发送函数
int fputc(int ch, FILE *f) //printf串口发送函数(重写fputc)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (uint8_t) ch;
return ch;
}
HAL_Delay(uint32_t Delay);//延时函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //定时器中断函数
{
static unsigned char ledState = 0;
if (htim == (&htim2))//TIM2的中断服务函数
{
if (ledState == 0)
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_SET);
ledState = !ledState;
}
}
HAL_TIM_Base_Start_IT(&htim2);//开定时器中断函数
HAL_TIM_Base_Stop_IT(&htim2);//关闭时器中断函数
HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);//开启定时器5,第二个通道的PWM
__HAL_TIM_SetCompare(&htim5, TIM_CHANNEL_2, 100);//即TIM5,第二个通道的比较值改为100,通过修改比较值修改占空比
TIM5->CCR2 = 100;//寄存器修改占空比
1、遇到把硬件使能线剪断处理:配置一个普通IO口,然后通过输出高低电平控制即可。
2、遇到电路板有强烈的干扰电流(有电路板变触摸现象),配置按键IO输入口为上拉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)