read from uint32_t in flash is zero STM32F1
You need to make nb_Frames_Flash volatile.

The compiler sees no change to nb_Frames_Flash anywhere in the code. Thus it implies it is 0. Resulting no code will be inserted for the assignement of CAN_nb_Frames_Tx_cc. (check the assembler, it will be missing) 

__attribute__((__section__(".nb_Frames"))) volatile const uint32_t nb_Frames_Flash;

The volatile keyword explicitly instructs to compiler to perform a read for every use of nb_Frames_Flash.