Пример #1
0
/**
  * @brief  Main program
  * @param  None
  * @retval None
  */
int main(void)
{
    /*!< At this stage the microcontroller clock setting is already configured,
         this is done through SystemInit() function which is called from startup
         files (startup_stm32f40_41xxx.s/startup_stm32f427_437xx.s/startup_stm32f429_439xx.s)
         before to branch to application main.
         To reconfigure the default setting of SystemInit() function, refer to
         system_stm32f4xx.c file
       */

    Var = 0x00005AA5;

    /* A mapping formula shows how to reference each word in the alias region to a
       corresponding bit in the bit-band region. The mapping formula is:
       bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number + 4)

    where:
       - bit_word_addr: is the address of the word in the alias memory region that
                        maps to the targeted bit.
       - bit_band_base is the starting address of the alias region
       - byte_offset is the number of the byte in the bit-band region that contains
         the targeted bit
       - bit_number is the bit position (0-7) of the targeted bit */

    /* Get the variable address --------------------------------------------------*/
    VarAddr = (uint32_t)&Var;

    /* Modify variable bit using bit-band access ---------------------------------*/
    /* Modify Var variable bit 0 -----------------------------------------------*/
    Var_ResetBit_BB(VarAddr, 0);  /* Var = 0x00005AA4 */
    Var_SetBit_BB(VarAddr, 0);    /* Var = 0x00005AA5 */

    /* Modify Var variable bit 11 ----------------------------------------------*/
    Var_ResetBit_BB(VarAddr, 11);             /* Var = 0x000052A5 */
    /* Get Var variable bit 11 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 11); /* VarBitValue = 0x00000000 */

    Var_SetBit_BB(VarAddr, 11);               /* Var = 0x00005AA5 */
    /* Get Var variable bit 11 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 11);    /* VarBitValue = 0x00000001 */

    /* Modify Var variable bit 31 ----------------------------------------------*/
    Var_SetBit_BB(VarAddr, 31);               /* Var = 0x80005AA5 */
    /* Get Var variable bit 31 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 31); /* VarBitValue = 0x00000001 */

    Var_ResetBit_BB(VarAddr, 31);             /* Var = 0x00005AA5 */
    /* Get Var variable bit 31 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 31); /* VarBitValue = 0x00000000 */

    while (1)
    {
    }
}
Пример #2
0
/**
  * @brief   Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
    Var = 0x00005AA5;

    /* Clock configuration */
    RCC_Configuration();

    /* A mapping formula shows how to reference each word in the alias region to a corresponding
       bit in the bit-band region. The mapping formula is:
       bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number + 4)

    where:
       - bit_word_addr: is the address of the word in the alias memory region that maps to the
                        targeted bit.
       - bit_band_base is the starting address of the alias region
       - byte_offset is the number of the byte in the bit-band region that contains the targeted bit
       - bit_number is the bit position (0-7) of the targeted bit */

    /* Get the variable address --------------------------------------------------*/
    VarAddr = (uint32_t)&Var;

    /* Modify variable bit using bit-band access ---------------------------------*/
    /* Modify Var variable bit 0 -----------------------------------------------*/
    Var_ResetBit_BB(VarAddr, 0);  /* Var = 0x00005AA4 */
    Var_SetBit_BB(VarAddr, 0);    /* Var = 0x00005AA5 */

    /* Modify Var variable bit 11 -----------------------------------------------*/
    Var_ResetBit_BB(VarAddr, 11);             /* Var = 0x000052A5 */
    /* Get Var variable bit 11 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 11); /* VarBitValue = 0x00000000 */

    Var_SetBit_BB(VarAddr, 11);               /* Var = 0x00005AA5 */
    /* Get Var variable bit 11 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 11);    /* VarBitValue = 0x00000001 */

    /* Modify Var variable bit 31 -----------------------------------------------*/
    Var_SetBit_BB(VarAddr, 31);               /* Var = 0x80005AA5 */
    /* Get Var variable bit 31 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 31); /* VarBitValue = 0x00000001 */

    Var_ResetBit_BB(VarAddr, 31);             /* Var = 0x00005AA5 */
    /* Get Var variable bit 31 value */
    VarBitValue = Var_GetBit_BB(VarAddr, 31); /* VarBitValue = 0x00000000 */

    while (1)
    {
    }
}