我是个STM32的初学者,前几天有空了就翻出了MINI 1.8B的开发板,在学习的时候想和51一样进行学习,就用杜邦线把MINI开发板的PB0-PB7口连到我以前的开发板中,想进行流水灯的控制程序练习一下。下面是我的学习程序:
[mw_shl_code=c,true]void Led_Init(void)
{
RCC->APB2ENR |= 1<<3; //使能PORTB时钟
GPIOB->CRL &= 0x00000000; //PB推挽输出
GPIOB->CRL |= 0x11111111;
GPIOB->CRH &= 0x00000000; //PB推挽输出
GPIOB->CRH |= 0x11111111;
GPIOB->ODR |= 0xFFFFFFFF; //PB输出高
}
[/mw_shl_code]
[mw_shl_code=c,true]int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
Delay_Init(72); //延时初始化
uart_init(72,9600); //串口初始化
Led_Init(); //LED初始化
Timer3_Init(10,7199); //10KHZ计数频率,计时到100,为1MS
GPIOB->ODR = 0;
while(1)
{
}
}[/mw_shl_code]
代码是把PB口全部设置为输出口,我这边用的是PB0-PB7共8个口,程序把PB口全部置为0,结果发现PB3和PB4输出的灯不亮。用万用表去测量LED发现有3.3V电压,说明这两个IO口肯定是没有输出低电平。电路上我只接有USB下载器,为了避免JTAG和LCD干扰,就全拔下来了。当我把LED接到PB8-PB15再去控制一切正常。
所以想请问一下各位,这个PB3和PB4为什么不能按我的要求输出?谢谢! 另外想问一下,平时大家在一次性更改IO输出的话,会像51一样直接P0=0x55;这样进行操作吗?如果是有别的方法,请介绍一下。谢谢
附上MINI开发板的MCU部分原理图。
|