low voltage pin in Keil (ARM) debuging?
By default, pins PB3 and PB4 are used for the JTAG functions TDO and TRST. The state of GPIOB-&gt;ODR doesn't modify this behavior.

These pins aren't the only ones in PORTB with assigned uses, either -- PB2 is BOOT1, so trying to use it as an output will cause problems as well. If you want to use an entire port as a 16-bit parallel output, you will need to use another port -- PORTC is probably your best option on the STM32F103RC. (PC14 and PC15 have some caveats, as they are used for the LSE oscillator, but the rest of the pins should be free.)

You can disable this by setting AFIO_MAPR-&gt;SWJ_CFG to AFIO_MAPR_SWJ_CFG_JTAGDISABLE or AFIO_MAPR_SWJ_CFG_DISABLE. (This is documented in the "Debug Support" chapter of the STM32F1 reference manual.) However, since you're using a JTAG probe, this will cause you to lose debug connectivity.