Hi,
I've been trying to use the following code to send a byte out of pin A.3(RX pin on the external connector port):
/* Enable GPIOx clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure Rx as output */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
void delay1 (int time)
{
int i;
time *= 10;
for(i = 0; i < time; i++)
asm volatile ("nop");
}
void write_byte(unsigned char val)
{
u8 i;
u8 temp;
for(i=0;i<8;i++)
{
temp = val >> i;
temp &=0x01;
if (temp)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_RESET);
delay1(1);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
delay1(16);
}
else
{
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_RESET);
delay1(15);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
}
}
delay1(65);
GPIO_WriteBit(GPIOA, GPIO_Pin_3, Bit_SET);
}
When I send a byte to the write_byte function I get much more toggles than expected. I've disabled timer2. Has anyone seen this or see something wrong with my code? Thanks!