реклама на сайте
подробности

 
 
> LwIP, FreeRTOS, STM32F207, Фирменный пример и его функционирование
Мусатов Констант...
сообщение Mar 1 2015, 12:18
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Есть такой пример подключения LwIP http://www.st.com/st-web-ui/static/active/...sw-stm32060.zip
Открываю его под IAR. Пример, в принципе, работает. Однако, такое впечатление, что вопреки, а не благодаря. Но возможно, я чего-то недопонимаю.
Поскольку приход и отправка данных по Ethernet асинхронное событие, то логично работать через прерывание. Потому логично увидеть в коде инициализации и включение прерывания:
main.c
Код
...
int main(void)
{
...
  /* configure Ethernet (GPIOs, clocks, MAC, DMA) */
  ETH_BSP_Config();
    
  /* Initilaize the LwIP stack */
  LwIP_Init();
  
  /* Initialize webserver demo */
  http_server_netconn_init();

....
}

Соответственно в stm32f2x7_eth_bsp.c
Код
...
void ETH_BSP_Config(void)
{
  /* Configure the GPIO ports for ethernet pins */
  ETH_GPIO_Config();
  
  /* Config NVIC for Ethernet */
  ETH_NVIC_Config();

  /* Configure the Ethernet MAC/DMA */
  ETH_MACDMA_Config();
....
}
...
void ETH_NVIC_Config(void)
{
  NVIC_InitTypeDef   NVIC_InitStructure;

  /* 2 bit for pre-emption priority, 2 bits for subpriority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  
  /* Enable the Ethernet global Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);    
}
...

Вроде как разрешили прерывание по эзернету
Однако открываю startup_stm32f2xx.s и вижу, что ETH_IRQHandler обслуживается внутренней заглушкой
Попытки найти альтернативный обработчик прерывания в остальном коде примера не дали результата.

Беру пример FreeRTOS 8.2.0. В нем, к сожалению, нет примера под IAR на STM32 Cortex и LwIP, но есть STM32F107 под GCC. В нем в STM32F10x_Startup.s отчетливо прописано
Код
.extern xPortPendSVHandler
.extern xPortSysTickHandler
.extern vPortSVCHandler
.extern vMAC_ISR;

Т.е. обслуживание прерывания есть. Как же пример от ST то работает?

Сообщение отредактировал Мусатов Константин - Mar 1 2015, 12:20
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016