OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4554|回复: 7

STM32老是会执行库函数stm32f10x_it.c 里面的这个函数void SPI1_IRQHandler(void) 主程序里面的有些语句都不能正常执行

[复制链接]

28

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-1-18
在线时间
21 小时
发表于 2016-6-1 17:43:48 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 编程菜鸟 于 2016-6-1 18:06 编辑

而且是可以执行中断里面的程序   就是不能执行主程序里面的函数

最佳答案

查看完整内容[请看2#楼]

终于找到原因了 因为配置了SPI中断 却没有使用SPI中断 导致频繁中断, 导致主程序 都不能执行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-1-18
在线时间
21 小时
 楼主| 发表于 2016-6-1 17:43:49 | 显示全部楼层
终于找到原因了  因为配置了SPI中断   却没有使用SPI中断  导致频繁中断,  导致主程序  都不能执行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-1 20:25:13 | 显示全部楼层
说明你的中断太频繁了,以至于主函数看起来都不像在运行了。检查是不是没有清除中断标记。
回复

使用道具 举报

28

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-1-18
在线时间
21 小时
 楼主| 发表于 2016-6-2 09:59:11 | 显示全部楼层
我在主程序设置断点了  就是进不去
回复

使用道具 举报

28

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-1-18
在线时间
21 小时
 楼主| 发表于 2016-6-2 10:02:09 | 显示全部楼层
中断频繁  也是void SysTickHandler(void)   这个中断频繁  每1ms发生一次  其他时间  为什么也进不了  主程序那
回复

使用道具 举报

0

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2016-1-27
在线时间
184 小时
发表于 2016-6-2 10:24:29 | 显示全部楼层
编程菜鸟 发表于 2016-6-2 10:02
中断频繁  也是void SysTickHandler(void)   这个中断频繁  每1ms发生一次  其他时间  为什么也进不了  主 ...

既然原子哥回答了,那就帮顶吧
回复

使用道具 举报

0

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2016-1-27
在线时间
184 小时
发表于 2016-6-2 10:25:39 | 显示全部楼层
编程菜鸟 发表于 2016-6-2 10:02
中断频繁  也是void SysTickHandler(void)   这个中断频繁  每1ms发生一次  其他时间  为什么也进不了  主 ...

关掉中断,把程序理顺,再加中断
回复

使用道具 举报

28

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2016-1-18
在线时间
21 小时
 楼主| 发表于 2016-6-2 10:58:10 | 显示全部楼层
void SysTick_Configuration(void)
{
        //-------------------------------------------------------
        //Start: Initialize SysTick timer and set period at 1ms
        // set SysTick clock source to HCLK=SYSCLK=72MHz
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

        // Set SysTick Preemption Priority to 3, sub-priority to 1
        NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 2);                                // SysTick preemption priority = 3

        // SysTick interrupt period in us = value / 72
        SysTick_SetReload(SYSTICK_US * SYS_CLK_MHz);
       
        // Enable the SysTick Interrupt
        SysTick_ITConfig(ENABLE);
                    
        // Do not enable the SysTick Counter until all global variables have been properly initialized
        SysTick_CounterCmd(SysTick_Counter_Enable);

        SysTick_ITConfig(ENABLE);//ê1?üSysTick?D??

        // Refer to stm32f10x_it.c - void SysTickHandler(void)
        //End: Initialize SysTick timer and set period at 100us
        //-------------------------------------------------------
}
上面配置  程序
在执行中断的时候  是没用清除中断的  他是不是每1MS执行一次  可不可以  认为  不用清除中断那
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 18:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表