中级会员
- 积分
- 313
- 金钱
- 313
- 注册时间
- 2023-8-29
- 在线时间
- 40 小时
|
楼主 |
发表于 2023-12-3 18:39:57
|
显示全部楼层
通过寄存器控制IO改变LED状态,IO不输出高电平,求大佬帮看看哪出问题了。
接线如下图左一,LED暗3秒,亮6秒,这6秒中LED的明暗 & PA5的电压无变化。短接LED,接线图如下左二,测PA5的电压,有3秒是0V,6秒是1.63V,没有3.3V电压出现。
程序如下:
#include "stm32f10x.h" // Device header
#include "Delay.h"
//--------------APB2使能时钟寄存器------------------------
#define RCC_APB2ENR *((unsigned volatile int*)0x40021018)
//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRL *((unsigned volatile int*)0x40010800)
#define GPIOA_ODR *((unsigned volatile int*)0x4001080C)
//----------------配置PA5控制LED亮、暗灭 ------------------------
#define LED_off GPIOA_CRL&=0xFFF0FFFF; GPIOA_CRL|=0X00200000; GPIOA_ODR=0x0<<5; //推挽低输出
#define LED_on GPIOA_CRL&=0xFFF0FFFF; GPIOA_CRL|=0X00200000; GPIOA_ODR=0x1<<5; //推挽高输出
#define LED_drak GPIOA_CRL&=0xFFF0FFFF; GPIOA_CRL|=0X00600000; GPIOA_ODR=0x1<<5; //开漏高阻态
//------------------------主函数--------------------------
int main(){
RCC_APB2ENR|=1<<2; //开启GPIOA外设时钟
while(1)
{
LED_on ;
Delay_ms(3000);
LED_drak;
Delay_ms(3000);
LED_off;
Delay_ms(3000);
}
}
|
|