库函数
#define OLED_SCLK_Clr() GPIO_WriteLow(GPIOB, GPIO_PIN_4)
#define OLED_SCLK_Set() GPIO_WriteHigh(GPIOB, GPIO_PIN_4)
#define OLED_SDIN_Clr() GPIO_WriteLow(GPIOB, GPIO_PIN_5)
#define OLED_SDIN_Set() GPIO_WriteHigh(GPIOB, GPIO_PIN_5)
寄存器
#define OLED_SCLK_Clr() PB_ODR_bit.ODR4 = 0
#define OLED_SCLK_Set() PB_ODR_bit.ODR4 = 1
#define OLED_SDIN_Clr() PB_ODR_bit.ODR5 = 0
#define OLED_SDIN_Set() PB_ODR_bit.ODR5 = 1
引脚初始化都是用的下面的寄存器版
void OLED_Init(void)
{
PB_DDR_bit.DDR4 = 1; //设置PB->4 为输出
PB_CR1_bit.C14 = 1; //设置为推挽输出
PB_CR2_bit.C24 = 1; //设置高速输出
PB_ODR_bit.ODR4 = 0; //设置低电平输出
PB_DDR_bit.DDR5 = 1; //设置PB->5 为输出
PB_CR1_bit.C15 = 1; //设置为推挽输出
PB_CR2_bit.C25 = 1; //设置高速输出
PB_ODR_bit.ODR5 = 0; //设置低电平输出
}
如上,宏定义这两个应该是等价的,一个是库函数操作,一个是直接操作寄存器,问题是上面的库函数正常显示,下面的寄存器就不行,编译不报错但是不显示,问题出在哪里百思不得其解
还请大神指教,谢谢
|