新手上路
- 积分
- 24
- 金钱
- 24
- 注册时间
- 2019-12-16
- 在线时间
- 7 小时
|
设置PB12,13为上拉输入,PB14,15为推挽输出。实验:给PB12输入2.52V电压,判断是否为高,为高则PB14输出高电平。但是PB14没输出高电平,LED1也没有亮。请教为什么没有跳进if中,或者初始化出错了吗?
GPIO初始化程序
#include "sys.h"
#include "gpio.h"
//PB11,PB12,PB13设置成输入
void INIO_Init(void)
{
RCC->APB2ENR|=1<<3;//使能PORTB时钟
GPIOB->CRH&=0XFF000FFF;//PB11,PB12,PB13设置成输入
GPIOB->CRH&=0XFF888000;//PB11,PB12,PB13设置成上拉输入
}
//PB14,PB15设置成输出
void OUTIO_Init(void)
{
RCC->APB2ENR|=1<<3;
GPIOB->CRH&=0X11FFFFFF;//PB14,PB15设置成输出
GPIOB->CRH&=0X33FFFFFF;//PB14,PB15设置成推挽输出
GPIOB->ODR|=1<<14;
GPIOB->ODR|=1<<15;
}
主程序
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "gpio.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
uart_init(72, 9600); //串口初始化为 9600
LED_Init();
INIO_Init();
OUTIO_Init();
while(1)
{
LED0 = !LED0;
delay_ms(50);
if(GPIOB->IDR&GPIO_IDR_IDR12)
{
LED1=!LED1;
GPIOB->BSRR|=1<<14;
}
else if(GPIOB->IDR&GPIO_IDR_IDR13)
{
GPIOB->BSRR|=1<<15;
}
}
}
|
|