I see you are talking about using the 16-bit timer, which is Timer 1 on the Uno.
Assuming you are using a Uno this code will do it:
// Clock frequency divided by 1 kHz frequency desired
const long timer1_OCR1A_Setting = F_CPU / 1000;
const byte outputPin = 10; // Timer 1 "B" output: OC1B
void setup()
{
pinMode (outputPin, OUTPUT);
// set up Timer 1
// Fast PWM top at OCR1A
TCCR1A = bit (WGM10) | bit (WGM11) | bit (COM1B1); // fast PWM, clear OC1B on compare
TCCR1B = bit (WGM12) | bit (WGM13) | bit (CS10); // fast PWM, no prescaler
OCR1A = timer1_OCR1A_Setting - 1; // zero relative
OCR1B = (timer1_OCR1A_Setting / 2) - 1; // 50 % duty cycle
} // end of setup
void loop()
{
}
You can change the 1000 in the calculation for timer1_OCR1A_Setting, within reason, to get other frequencies.
See my page about timers for more background information.