在用IAR8.40.1做國產芯片華大HC32F460底層配置時,使用宏定義讀取埠狀態時,0組埠狀態永遠為0,即使暫存器中輸入埠狀態為1,讀取狀態也為0,代碼如下:
#define M_PORT_GetBit(enPort,u16Pin) (((*(Uint16 *)((Uint32)\
(&M4_PORT->PIDRA) + 0x10u * (enPort)))>>(u16Pin))&0x01)
使用行內函式讀取,和宏定義結果相同,代碼如下:
#pragma inline = forced
Uint16 M_PORT_GetBit_fun(const en_port_t enPort, const uint16_t u16Pin)
{
return (((*(Uint16 *)((Uint32)\
(&M4_PORT->PIDRA) + 0x10u * enPort))>>u16Pin)&0x01);
}
但是使用普通函式呼叫,就可以正確讀取到0組埠狀態。代碼如下:
Uint16 M_PORT_GetBit_fun(const en_port_t enPort, const uint16_t u16Pin)
{
return (((*(Uint16 *)((Uint32)\
(&M4_PORT->PIDRA) + 0x10u * enPort))>>u16Pin)&0x01);
}
請教一下大神,是否遇到過類似的問題。求解答,萬分感謝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247450.html
標籤:單片機/工控
