/** * @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) { } }
/** * @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) { } }