Witam. Mam problem z odbieraniem wysyłanych przeze mnie liczb:1 oraz 0. Chcę napisać kod, za pomocą, którego bym włączał i wyłączał diodę led płytki Nucleo F411RE, podłączonej do pinu PA5. Odbywać się to ma za pomocą komunikacji Bluetooth. BTM-222 jest podłączony przez USART6 do pinów PC7(Rx) jak i PC6(Tx). Oczywiście podłączyłem na krzyż. Poniżej zamieszczam kod, konfiguracji GPIO oraz funkcję, za pomocą której powinienem włączać diodkę.
Kod:
//receinving data
void USART6_IRQHandler(void)
{
if (USART6->SR & USART_FLAG_RXNE)// != RESET)
{
i = USART_ReceiveData(USART6);
if(i == '1'){
GPIO_WriteBit(GPIOA,GPIO_Pin_5,Bit_SET); // Set '1' on PA5
}
else if(i == '0'){
GPIO_WriteBit(GPIOA,GPIO_Pin_5,Bit_RESET); // Set '0' on PA5
}
}
}
//gpio configuration
void GPIO_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
//LED as PA5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART6 Tx (PC6)*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_USART6);
/* Configure USART6 Rx (PC7)*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
Ustawiam pułapkę na linii "i = USART_ReceiveData(USART6);" i nie dochodzi do tego miejsca, więc coś jest nie tak z ifem, jednakże co? Nie bardzo umiem poradzić sobie z tym problemem. Z góry dziękuję za pomoc.