庫函數
#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; //設置低電平輸出
}
如上,宏定義這兩個應該是等價的,一個是庫函數操作,一個是直接操作寄存器,問題是上面的庫函數正常顯示,下面的寄存器就不行,編譯不報錯但是不顯示,問題出在哪里百思不得其解
還請大神指教,謝謝
|