完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
把两个函数在不同文件下编译,整个工程编译后的大小相差差不多60kB!!!
1.把task_red_led()函数和task_green_led()放在app.c文件中的时候,工程编译结果为: ,code + RO+RW=73kb 2.把task_red_led()函数和task_green_led()放在main.c文件中的时候,工程编译结果为: , code + RO+RW=13kb 另外,还有一种情况: 当把app.c中红色部分的代码注释掉的时候,编译结果又不一样了。请看下面, 3.把task_red_led()函数和task_green_led()放在app.c文件中的时候,工程编译结果为: 4.把task_red_led()函数和task_green_led()放在main.c文件中的时候,工程编译结果为: 在以上2,3,4的情况下,程序能够运行(板子上的红灯和绿灯闪烁),在1的情况下,则不能运行(灯不闪烁)。 有个疑问就是: 在1情况下,怎么会多出60kb左右的代码? 板子上的芯片为STM32F103RBT6,闪存有128kB,不应该是存储空间不够吧。 还请坛子里的朋友帮帮忙,看看这到底怎么回事啊?这问题真的很是莫名其妙! main.c文件内容如下: #include "includes.h" #include "netbuf.h" #include "tcpip.h" #include "init.h" /******************?è????????????********************/ #define STARTUP_TASK_PRIO 4 /******************?è?????ó??(??????OS_STK)**********************/ #define STARTUP_TASK_STK_SIZE 40 #define RED_LED_TASK_STK_SIZE 40 #define GREEN_LED_TASK_STK_SIZE 40 #define LWIP_ENTRY_TASK_STK_SIZE 80 static OS_STK startup_stk[STARTUP_TASK_STK_SIZE]; static OS_STK red_led_stk[RED_LED_TASK_STK_SIZE]; static OS_STK green_led_stk[GREEN_LED_TASK_STK_SIZE]; static OS_STK lwip_entry_stk[LWIP_ENTRY_TASK_STK_SIZE]; void task_red_led(void *p_arg) { (void)p_arg; while (1) { GPIO_ResetBits(GPIOA,GPIO_Pin_8); OSTimeDlyHMSM(0, 0,0,600); GPIO_SetBits(GPIOA,GPIO_Pin_8); OSTimeDlyHMSM(0, 0,0,600); } } void task_green_led(void *p_arg) { (void)p_arg; while (1) { GPIO_ResetBits(GPIOD,GPIO_Pin_2); OSTimeDlyHMSM(0, 0,1,000); GPIO_SetBits(GPIOD,GPIO_Pin_2); OSTimeDlyHMSM(0, 0,1,000); } } void Task_Start(void *arg) { // OSTaskCreate(LwIPEntry,(void *)NULL,&lwip_entry_stk[LWIP_ENTRY_TASK_STK_SIZE - 1],STARTUP_TASK_PRIO + 1); OSTaskCreate(task_green_led ,(void *)NULL,&green_led_stk[GREEN_LED_TASK_STK_SIZE - 1],STARTUP_TASK_PRIO + 2); OSTaskCreate(task_red_led ,(void *)NULL,&red_led_stk[RED_LED_TASK_STK_SIZE - 1],STARTUP_TASK_PRIO + 3); OSTaskDel(OS_PRIO_SELF); } int main(void) { BSP_Init(); OSInit(); OSTaskCreate(Task_Start, (void *)0, &startup_stk[STARTUP_TASK_STK_SIZE - 1], STARTUP_TASK_PRIO); OSStart(); return 0; } app.c文件内容如下: #include "includes.h" #include "netbuf.h" #include "tcpip.h" #include "init.h" #if 1 void SetLwIP(void) { extern err_t ethernetif_init(struct netif *netif); struct ip_addr IpAddr, NetMask, Gateway; static struct netif EMACNetif; netif_init(); IP4_ADDR(&IpAddr, 192, 168, 1, 16); IP4_ADDR(&NetMask, 192, 168, 1, 1); IP4_ADDR(&Gateway, 255, 255, 255, 0); netif_add(&EMACNetif, &IpAddr, &NetMask, &Gateway, NULL, ethernetif_init, tcpip_input); netif_set_default(&EMACNetif); netif_set_up(&EMACNetif); } void LwIPEntry(void * pvArg) { struct netconn *Conn, *NewConn; struct netbuf *Netbuf; lwip_init(); tcpip_init(NULL , NULL); SetLwIP(); Conn = netconn_new(NETCONN_TCP); netconn_bind( Conn, NULL, 80); netconn_listen( Conn); while(TRUE) { netconn_accept( Conn,&NewConn); if( NewConn != NULL) { netconn_recv( NewConn,&Netbuf); if( Netbuf != NULL) { netconn_write( NewConn, "HTTP/1.1 200 OKrnContent-type: text/htmlrnrn", 44, NETCONN_COPY); netconn_write( NewConn, " ????LWIP TCP??????", 40, NETCONN_COPY);netbuf_delete( Netbuf); } netconn_close( NewConn); while(netconn_delete( NewConn) != ERR_OK) OSTimeDlyHMSM(0, 0, 1, 0); } } } #endif MyLib-uCOS-II -LWIP - 0.1.1 - 副本.zip (9.13 MB ) |
|
相关推荐
2个回答
|
|
没有被调用到了吧!
|
|
|
|
请问suse同学,你这个lwip移植做出来了吗?能不能分享一下?
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2560 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2346 浏览 5 评论
3181 浏览 3 评论
2825 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2777 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
634浏览 1评论
881浏览 0评论
998浏览 0评论
647浏览 0评论
474浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 07:43 , Processed in 1.083058 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号