|
Keil MDK下的STM32F407移植FreeRTOS及FreeRTOSTCPIP,不是lwip,是FreeRTOS自己的TCPIP協(xié)議棧。其他單片機(jī)可供參考。
單片機(jī)源程序如下:
- #include "stm32f4xx.h"
- #include "public.h"
- #include "mQueue.h"
- #include "FreeRTOS.h"
- #include "task.h"
- #include "FreeRTOS_IP.h"
- #include "LAN8720.h"
- extern ETH_DMADESCTypeDef DMARxDscrTab[ETH_RXBUFNB]; //stm32f4x7_eth.c
- extern ETH_DMADESCTypeDef DMATxDscrTab[ETH_TXBUFNB];
- extern uint8_t Rx_Buff[ETH_RX_BUF_SIZE * ETH_RXBUFNB];
- extern uint8_t Tx_Buff[ETH_TX_BUF_SIZE * ETH_TXBUFNB];
- extern NetworkParm networkParm; //LAN8720.c
- int main(void)
- {
- delay_ms(100);
-
- mNVIC_config();
- mIWDG_config(6, 625); //4s看門狗
- mUSART1_config(921600); //打印使用
- mPrintf("start...\r\n");
- mRNG_Init(); //初始化隨機(jī)數(shù)
-
- LAN8720_Init(); //初始化LAN8720
- ETH_MACDMA_Config(); //配置STM32以太網(wǎng)控制器
- ETH_MACAddressConfig(ETH_MAC_Address0, networkParm.mac); //向STM32F4的MAC地址寄存器中寫入MAC地址
- ETH_DMATxDescChainInit(DMATxDscrTab, Tx_Buff, ETH_TXBUFNB);
- ETH_DMARxDescChainInit(DMARxDscrTab, Rx_Buff, ETH_RXBUFNB);
- for(u8 i = 0; i < ETH_TXBUFNB; i++) //使能ipv4發(fā)送幀校驗和生成
- {
- /* FreeRTOSTCPIP只支持硬件生成ipv4校驗和,不支持TCP/UDP/ICMP校驗和 */
- ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumIPV4Header);
- }
- ETH_Start(); //開啟MAC和DMA
-
- hange_vUSE_DHCP = networkParm.dhcp; /* 見hange_vUSE_DHCP定義 */
- FreeRTOS_IPInit(networkParm.ip,
- networkParm.sub,
- networkParm.gw,
- networkParm.domainS1,
- networkParm.mac);
-
- xTaskCreate(ethCardRxTask,
- "ethCardRxTask",
- ethCardRxStackSize,
- (void* )NULL,
- ethCardRxPrio,
- ðCardRxHandler);
- vTaskStartScheduler(); //啟動任務(wù)調(diào)度
- while(1) //真執(zhí)行這里也就崩了
- {
- taskENTER_CRITICAL(); //進(jìn)臨界狀態(tài),關(guān)閉所有中斷
- mPrintf("OS沒啟動或崩了\r\n");
- STM32_SYSTEM_RESET;
- }
- // return 0;
- }
復(fù)制代碼
所有程序51hei提供下載:
STM32F407-FreeRTOS TCPIP.7z
(697.48 KB, 下載次數(shù): 82)
2020-5-7 17:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|