Вопрос решен. Связь между платами утановлена. Проблемма была в перемычке на бутлоадер на отладочной плате мастера. По-этому, когда отключала программатор, плата после перезагрузки уходила в бут, а не на загрузку основной программы. Но осталась проблемма с платой приемника. Что-то мне кажется, не правильно настроены либо описаны прерывания у меня для stm32f103.Перифэралс Кан ресивер в Кейле при отладке показывает, что принят тот пакет, который отпрвлен мастером, НО прерывания не срабатывают.
Более того, прогрмма заходит на строчку 324 файла startup_stm32f10x_hd.s.
CODE
/*=========================================================================*/
void NVIC_CAN_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=USB_LP_CAN1_RX0_IRQn;//|USB_HP_CAN1_TX_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*==============================================================================*/
void USB_HP_CAN1_TX_IRQHandler (void)
{
if (CAN_GetITStatus(CAN1,CAN_IT_TME))
{ // request completed mbx 0
CAN_ClearITPendingBit(CAN1,CAN_IT_TME);
CAN_TxRdy++;
}
}
/*========================================================================*/
void USB_LP_CAN1_RX_IRQHandler (void)
{
if (CAN_GetITStatus(CAN1,CAN_IT_FMP0))
{ // message pending ?
CAN_Receive(CAN1,0,&RxMessage); // read the message
CAN_RxRdy++; // set receive flag
}
}
/*===========================================================================*/
int main (void)
{
__disable_irq ();
Init_CLK();
NVIC_CAN_Configuration();
Init_GPIO_CAN();
Init_CAN();
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
CAN_ITConfig(CAN1, CAN_IT_FF0, ENABLE);
CAN_ITConfig(CAN1, CAN_IT_FOV0, ENABLE);
__enable_irq ();
while (1)
{
}
}
Сообщение отредактировал IgorKossak - May 10 2012, 07:03
Причина редактирования: [codebox]