hc32f460_driver_sys 0.1.0

Provide driver function binding for HDSC's HC32F460 MCU.
Documentation
/* automatically generated by rust-bindgen 0.72.1 */

pub const I2S_EXT_CLK_FREQ: u32 = 12288000;
pub const I2S_CLK_SRC_PLL: u32 = 262144;
pub const I2S_CLK_SRC_EXT: u32 = 8388608;
pub const I2S_MD_MASTER: u32 = 0;
pub const I2S_MD_SLAVE: u32 = 32;
pub const I2S_PROTOCOL_PHILLIPS: u32 = 0;
pub const I2S_PROTOCOL_MSB: u32 = 1;
pub const I2S_PROTOCOL_LSB: u32 = 2;
pub const I2S_PROTOCOL_PCM_SHORT: u32 = 3;
pub const I2S_PROTOCOL_PCM_LONG: u32 = 35;
pub const I2S_TRANS_MD_HALF_DUPLEX_RX: u32 = 0;
pub const I2S_TRANS_MD_HALF_DUPLEX_TX: u32 = 524288;
pub const I2S_TRANS_MD_FULL_DUPLEX: u32 = 4718592;
pub const I2S_AUDIO_FREQ_192K: u32 = 192000;
pub const I2S_AUDIO_FREQ_96K: u32 = 96000;
pub const I2S_AUDIO_FREQ_48K: u32 = 48000;
pub const I2S_AUDIO_FREQ_44K: u32 = 44100;
pub const I2S_AUDIO_FREQ_32K: u32 = 32000;
pub const I2S_AUDIO_FREQ_22K: u32 = 22050;
pub const I2S_AUDIO_FREQ_16K: u32 = 16000;
pub const I2S_AUDIO_FREQ_8K: u32 = 8000;
pub const I2S_AUDIO_FREQ_DEFAULT: u32 = 2;
pub const I2S_CH_LEN_16BIT: u32 = 0;
pub const I2S_CH_LEN_32BIT: u32 = 16;
pub const I2S_DATA_LEN_16BIT: u32 = 0;
pub const I2S_DATA_LEN_24BIT: u32 = 4;
pub const I2S_DATA_LEN_32BIT: u32 = 8;
pub const I2S_MCK_OUTPUT_DISABLE: u32 = 0;
pub const I2S_MCK_OUTPUT_ENABLE: u32 = 128;
pub const I2S_TRANS_LVL0: u32 = 0;
pub const I2S_TRANS_LVL1: u32 = 256;
pub const I2S_TRANS_LVL2: u32 = 512;
pub const I2S_RECEIVE_LVL0: u32 = 0;
pub const I2S_RECEIVE_LVL1: u32 = 4096;
pub const I2S_RECEIVE_LVL2: u32 = 8192;
pub const I2S_FUNC_TX: u32 = 1;
pub const I2S_FUNC_RX: u32 = 4;
pub const I2S_FUNC_ALL: u32 = 5;
pub const I2S_RST_TYPE_FIFO: u32 = 65536;
pub const I2S_RST_TYPE_ALL: u32 = 65536;
pub const I2S_INT_TX: u32 = 2;
pub const I2S_INT_RX: u32 = 8;
pub const I2S_INT_ERR: u32 = 16;
pub const I2S_INT_ALL: u32 = 26;
pub const I2S_FLAG_TX_ALARM: u32 = 1;
pub const I2S_FLAG_RX_ALARM: u32 = 2;
pub const I2S_FLAG_TX_EMPTY: u32 = 4;
pub const I2S_FLAG_TX_FULL: u32 = 8;
pub const I2S_FLAG_RX_EMPTY: u32 = 16;
pub const I2S_FLAG_RX_FULL: u32 = 32;
pub const I2S_FLAG_TX_ERR: u32 = 65536;
pub const I2S_FLAG_RX_ERR: u32 = 131072;
pub const I2S_FLAG_ALL: u32 = 196671;
pub const I2S_FLAG_CLR_ALL: u32 = 196608;
pub const en_functional_state_t_DISABLE: en_functional_state_t = 0;
pub const en_functional_state_t_ENABLE: en_functional_state_t = 1;
#[doc = " @brief Functional state"]
pub type en_functional_state_t = ::core::ffi::c_uint;
pub const en_flag_status_t_RESET: en_flag_status_t = 0;
pub const en_flag_status_t_SET: en_flag_status_t = 1;
#[doc = " @brief Flag status"]
pub type en_flag_status_t = ::core::ffi::c_uint;
#[doc = " @brief I2S"]
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct CM_I2S_TypeDef {
    pub CTRL: u32,
    pub SR: u32,
    pub ER: u32,
    pub CFGR: u32,
    pub TXBUF: u32,
    pub RXBUF: u32,
    pub PR: u32,
}
#[doc = " @brief I2S Init structure definition"]
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct stc_i2s_init_t {
    #[doc = "< Specifies the clock source of I2S.\nThis parameter can be a value of @ref I2S_Clock_Source"]
    pub u32ClockSrc: u32,
    #[doc = "< Specifies the master/slave mode of I2S.\nThis parameter can be a value of @ref I2S_Mode"]
    pub u32Mode: u32,
    #[doc = "< Specifies the communication protocol of I2S.\nThis parameter can be a value of @ref I2S_Protocol"]
    pub u32Protocol: u32,
    #[doc = "< Specifies the transmission mode for the I2S communication.\nThis parameter can be a value of @ref I2S_Trans_Mode"]
    pub u32TransMode: u32,
    #[doc = "< Specifies the frequency selected for the I2S communication.\nThis parameter can be a value of @ref I2S_Audio_Frequency"]
    pub u32AudioFreq: u32,
    #[doc = "< Specifies the channel length for the I2S communication.\nThis parameter can be a value of @ref I2S_Channel_Length"]
    pub u32ChWidth: u32,
    #[doc = "< Specifies the data length for the I2S communication.\nThis parameter can be a value of @ref I2S_Data_Length"]
    pub u32DataWidth: u32,
    #[doc = "< Specifies the validity of the MCK output for I2S.\nThis parameter can be a value of @ref I2S_MCK_Output"]
    pub u32MCKOutput: u32,
    #[doc = "< Specifies the level of transfer FIFO.\nThis parameter can be a value of @ref I2S_Trans_Level"]
    pub u32TransFIFOLevel: u32,
    #[doc = "< Specifies the level of receive FIFO.\nThis parameter can be a value of @ref I2S_Receive_Level"]
    pub u32ReceiveFIFOLevel: u32,
}
unsafe extern "C" {
    #[doc = "Global function prototypes (definition in C source)\n/\n/**\n @addtogroup I2S_Global_Functions\n @{"]
    pub fn I2S_DeInit(I2Sx: *mut CM_I2S_TypeDef) -> i32;
    pub fn I2S_Init(I2Sx: *mut CM_I2S_TypeDef, pstcI2sInit: *const stc_i2s_init_t) -> i32;
    pub fn I2S_StructInit(pstcI2sInit: *mut stc_i2s_init_t) -> i32;
    pub fn I2S_SWReset(I2Sx: *mut CM_I2S_TypeDef, u32Type: u32);
    pub fn I2S_SetTransMode(I2Sx: *mut CM_I2S_TypeDef, u32Mode: u32);
    pub fn I2S_SetTransFIFOLevel(I2Sx: *mut CM_I2S_TypeDef, u32Level: u32);
    pub fn I2S_SetReceiveFIFOLevel(I2Sx: *mut CM_I2S_TypeDef, u32Level: u32);
    pub fn I2S_SetProtocol(I2Sx: *mut CM_I2S_TypeDef, u32Protocol: u32);
    pub fn I2S_SetAudioFreq(I2Sx: *mut CM_I2S_TypeDef, u32Freq: u32) -> i32;
    pub fn I2S_MCKOutputCmd(I2Sx: *mut CM_I2S_TypeDef, enNewState: en_functional_state_t);
    pub fn I2S_FuncCmd(I2Sx: *mut CM_I2S_TypeDef, u32Func: u32, enNewState: en_functional_state_t);
    pub fn I2S_WriteData(I2Sx: *mut CM_I2S_TypeDef, u32Data: u32);
    pub fn I2S_ReadData(I2Sx: *const CM_I2S_TypeDef) -> u32;
    pub fn I2S_Trans(
        I2Sx: *mut CM_I2S_TypeDef,
        pvTxBuf: *const ::core::ffi::c_void,
        u32Len: u32,
        u32Timeout: u32,
    ) -> i32;
    pub fn I2S_Receive(
        I2Sx: *const CM_I2S_TypeDef,
        pvRxBuf: *mut ::core::ffi::c_void,
        u32Len: u32,
        u32Timeout: u32,
    ) -> i32;
    pub fn I2S_TransReceive(
        I2Sx: *mut CM_I2S_TypeDef,
        pvTxBuf: *const ::core::ffi::c_void,
        pvRxBuf: *mut ::core::ffi::c_void,
        u32Len: u32,
        u32Timeout: u32,
    ) -> i32;
    pub fn I2S_IntCmd(
        I2Sx: *mut CM_I2S_TypeDef,
        u32IntType: u32,
        enNewState: en_functional_state_t,
    );
    pub fn I2S_GetStatus(I2Sx: *const CM_I2S_TypeDef, u32Flag: u32) -> en_flag_status_t;
    pub fn I2S_ClearStatus(I2Sx: *mut CM_I2S_TypeDef, u32Flag: u32);
}