标题: STM32F4移植FreeRTOS及FreeRTOSTCPIP工程源码 [打印本页]

作者: hange_v    时间: 2020-5-7 17:21
标题: STM32F4移植FreeRTOS及FreeRTOSTCPIP工程源码
Keil MDK下的STM32F407移植FreeRTOS及FreeRTOSTCPIP,不是lwip,是FreeRTOS自己的TCPIP协议栈。其他单片机可供参考。

单片机源程序如下:
  1. #include "stm32f4xx.h"
  2. #include "public.h"
  3. #include "mQueue.h"
  4. #include "FreeRTOS.h"
  5. #include "task.h"
  6. #include "FreeRTOS_IP.h"
  7. #include "LAN8720.h"

  8. extern ETH_DMADESCTypeDef DMARxDscrTab[ETH_RXBUFNB];        //stm32f4x7_eth.c
  9. extern ETH_DMADESCTypeDef DMATxDscrTab[ETH_TXBUFNB];
  10. extern uint8_t Rx_Buff[ETH_RX_BUF_SIZE * ETH_RXBUFNB];
  11. extern uint8_t Tx_Buff[ETH_TX_BUF_SIZE * ETH_TXBUFNB];

  12. extern NetworkParm networkParm;  //LAN8720.c

  13. int main(void)
  14. {
  15.         delay_ms(100);
  16.         
  17.         mNVIC_config();
  18.         mIWDG_config(6, 625);  //4s看门狗
  19.         mUSART1_config(921600);  //打印使用
  20.         mPrintf("start...\r\n");

  21.         mRNG_Init();  //初始化随机数
  22.         
  23.         LAN8720_Init();  //初始化LAN8720
  24.         ETH_MACDMA_Config();  //配置STM32以太网控制器
  25.         ETH_MACAddressConfig(ETH_MAC_Address0, networkParm.mac);  //向STM32F4的MAC地址寄存器中写入MAC地址
  26.         ETH_DMATxDescChainInit(DMATxDscrTab, Tx_Buff, ETH_TXBUFNB);
  27.         ETH_DMARxDescChainInit(DMARxDscrTab, Rx_Buff, ETH_RXBUFNB);
  28.   for(u8 i = 0; i < ETH_TXBUFNB; i++)         //使能ipv4发送帧校验和生成
  29.         {
  30.     /* FreeRTOSTCPIP只支持硬件生成ipv4校验和,不支持TCP/UDP/ICMP校验和 */
  31.                 ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumIPV4Header);
  32.         }
  33.         ETH_Start();  //开启MAC和DMA
  34.         
  35.         hange_vUSE_DHCP = networkParm.dhcp;  /* 见hange_vUSE_DHCP定义 */
  36.         FreeRTOS_IPInit(networkParm.ip,
  37.                                                                         networkParm.sub,
  38.                                                                         networkParm.gw,
  39.                         networkParm.domainS1,
  40.                                                                         networkParm.mac);
  41.         
  42.         xTaskCreate(ethCardRxTask,
  43.                     "ethCardRxTask",
  44.                     ethCardRxStackSize,
  45.                     (void* )NULL,
  46.                     ethCardRxPrio,
  47.                     ðCardRxHandler);

  48.         vTaskStartScheduler();  //启动任务调度

  49.   while(1)  //真执行这里也就崩了
  50.         {
  51.                 taskENTER_CRITICAL();  //进临界状态,关闭所有中断
  52.           mPrintf("OS没启动或崩了\r\n");
  53.     STM32_SYSTEM_RESET;
  54.         }
  55. //        return 0;
  56. }
复制代码

所有程序51hei提供下载:
STM32F407-FreeRTOS TCPIP.7z (697.48 KB, 下载次数: 80)



作者: LI-GONG-004    时间: 2022-10-29 08:18
老大,FREERTOS也有自己的IP栈啊?   我只知道LWIP和    UCOS 的IP栈
作者: hange_v    时间: 2022-10-29 20:55
LI-GONG-004 发表于 2022-10-29 08:18
老大,FREERTOS也有自己的IP栈啊?   我只知道LWIP和    UCOS 的IP栈

当然了,2016年出的,亚马逊出品,绝对好用
作者: yanrz    时间: 2023-10-30 09:45
不错,应该可以用来做串口服务器,有时间的话,我下载下来看看!谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1