打印

关于奋斗版uIP以太网通信中的一点疑惑?

[复制链接]
1990|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ben001|  楼主 | 2013-9-30 18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ben001 于 2013-9-30 18:44 编辑

    最近在学习以太网通信,通信芯片是使用ENC28J60,拿了奋斗版uIP例程进行学习。但是最近看到SysTick部分的时候发现一个问题,就是SysTick的中断函数定义了,却没有作为中断函数调用。
       根据例子中systick.c文件中定义了一个函数SysTick_ISR(),函数的功能说明是SysTick中断服务程序,每隔1ms进入1次。但是我stm32f10x_it.c文件中找到SysTick的中断函数SysTick_Handler(),它的定义如下:
/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
extern void SysTick_ISR(void);
void SysTick_Handler(void)
{
        if(net_time05++>=1000){                                         //0.5秒溢出标志
           net_time05=0;
           net_timeover05=1;        
        }  
        if(net_time10++>=20000){                                 //10秒溢出标志
           net_time10=0;
           net_timeover10=1;        
        }
}
由以上代码可以看出SysTick_ISR()函数在这里只申明了外部定义,但是却没有在SysTick的中断函数SysTick_Handler()中断函数中调用。函数SysTick_Handler()中的net_time05、net_timeover05、net_time10和net_timeover10变量是在main.c文件eth_poll()函数中调用的,作为更新ARP定时器。SysTick_ISR()最终是由clock-arch.c文件的clock_time()函数调用。那么这个没有在SysTick_Handler()中断函数中调用的SysTick_ISR()函数也能起到定时的作用???


附件是奋斗版的uIPl例子的完整工程代码:

STM32-奋斗板-uIP1.0网络例程.zip (493.55 KB)




沙发
ben001|  楼主 | 2013-10-3 10:27 | 只看该作者
有哪位在用奋斗版的STM32开发板的码?

使用特权

评论回复
板凳
香如故| | 2013-10-4 19:01 | 只看该作者
这一句extern void SysTick_ISR(void);根本就没有用,可以删掉。
SysTick_ISR(void)也不起作用。
中断处理就是SysTick_Handler(void)函数

使用特权

评论回复
地板
ben001|  楼主 | 2013-10-6 15:06 | 只看该作者
是呀,我也觉得!!!!

所以就感到疑惑嘛!!

使用特权

评论回复
5
hkcj| | 2013-10-7 10:12 | 只看该作者
不是很熟悉这一块  楼主   帮你顶一个   看看别人的意见如何   顶你一个

使用特权

评论回复
6
Leeone| | 2013-10-8 14:13 | 只看该作者
我在用 不过没学到那部分,你可以问下开发板的作者了解下

使用特权

评论回复
7
d0123b| | 2014-4-30 13:20 | 只看该作者
学习奋斗版

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

0

粉丝