7518|12

72

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请教一下中断的操作问题.... [复制链接]

板子终于出来了,可在调试时始终不能进入中断,系统时钟的和外部中断都一样。先贴出系统时钟的配置代码,望大虾们给指点指点,谢谢!

此帖出自stm32/stm8论坛

最新回复

                                 不细致的结果  详情 回复 发表于 2010-12-8 17:40
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

相关函数



/* ##################################    SysTick function  ############################################ */
//========================位于core_cm3.h文件==================================

/* SysTick constants */
#define SYSTICK_ENABLE              0                                          /* Config-Bit to start or stop the SysTick Timer                         */
#define SYSTICK_TICKINT             1                                          /* Config-Bit to enable or disable the SysTick interrupt                 */
#define SYSTICK_CLKSOURCE           2                                          /* Clocksource has the offset 2 in SysTick Control and Status Register   */
#define SYSTICK_MAXCOUNT       ((1<<24) -1)                                    /* SysTick MaxCount                                                      */

/**
 * @brief  Initialize and start the SysTick counter and its interrupt.
 *
 * @param  uint32_t ticks is the number of ticks between two interrupts
 * @return  none
 *
 * Initialise the system tick timer and its interrupt and start the
 * system tick timer / counter in free running mode to generate
 * periodical interrupts.
 */
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SYSTICK_MAXCOUNT)  return (1);                                                /* Reload value impossible */

  SysTick->LOAD  =  (ticks & SYSTICK_MAXCOUNT) - 1;                                         /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);                               /* set Priority for Cortex-M0 System Interrupts */
  SysTick->VAL   =  (0x00);                                                                 /* Load the SysTick Counter Value */
  SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<<SYSTICK_ENABLE) | (1<<SYSTICK_TICKINT);    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                                               /* Function successful */
}


//================================================================================



#define SYSCLK_FREQ  72000000


int main(void)
{
  .......
  SysTick_Config(SYSCLK_FREQ/100); //10mS
  .......
 
 
 while(1)
 {
  .......
 } 
 
}
  
  
void SysTick_Handler(void)
{
 .....
}
 
//===================================================================
//向量表文件
        ;; Forward declaration of sections.
        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        PUBLIC  __vector_table

        DATA
__intial_sp      EQU     0x2000fff0
__vector_table
        DCD     __intial_sp
        DCD     __iar_program_start

        DCD     NMI_Handler               ; NMI Handler
        DCD     HardFault_Handler         ; Hard Fault Handler
        DCD     MemManage_Handler         ; MPU Fault Handler
        DCD     BusFault_Handler          ; Bus Fault Handler
        DCD     UsageFault_Handler        ; Usage Fault Handler
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     0                         ; Reserved
        DCD     SVC_Handler               ; SVCall Handler
        DCD     DebugMon_Handler          ; Debug Monitor Handler
        DCD     0                         ; Reserved
        DCD     PendSV_Handler            ; PendSV Handler
        DCD     SysTick_Handler           ; SysTick Handler
       
       ............
        
 
        PUBWEAK SysTick_Handler
        SECTION .text:CODE:REORDER(1)
SysTick_Handler
        B SysTick_Handler        //systick_irq
        
        ...............
         
              
              
此帖出自stm32/stm8论坛
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

自己顶起来。

调试时始终不能进入中断,SysTick 和外部中断都一样不能产生中断。

此帖出自stm32/stm8论坛
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 

初始化NVIC模块了吗?

                                 请参考一下STM32固件库中的例程吧。
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

5
 

初始化了

参照固件库例程,该设置的寄存器都设置了。

//各中断的优先级定义
#define Sys_TickPri           0
#define Exit8_IntPri          3 //power down
#define Spi1_Txd_IntPri       4 //驱动数据发送中断
#define Exit10_IntPri         5 //花型接收中断 u1_txd
#define U2_Rxd_Dma_Intpri     6 //QEI接收中断
#define Spi2_DmaTxd_IntPri    7 //通讯发送DMA中断


void Nvic_Init(void)
{
  NVIC_SetPriorityGrouping(NVIC_PriorityGroup_4);  //16级抢占优先级,1级子优先级。

  NVIC_SetPriority(EXTI9_5_IRQn,Exit8_IntPri);//
  NVIC_SetPriority(SPI1_IRQn, Spi1_Txd_IntPri);
  NVIC_SetPriority(EXTI15_10_IRQn, Exit10_IntPri);
  NVIC_SetPriority(USART2_IRQn, U2_Rxd_Dma_Intpri);
  NVIC_SetPriority(DMA1_Channel5_IRQn, Spi2_DmaTxd_IntPri);
  NVIC_SetPriority(CPU_INT_SYSTICK,Sys_TickPri);

  NVIC_ClearPendingIRQ(EXTI9_5_IRQn);
  NVIC_ClearPendingIRQ(SPI1_IRQn);
  NVIC_ClearPendingIRQ(EXTI15_10_IRQn);
  NVIC_ClearPendingIRQ(USART2_IRQn);
  NVIC_ClearPendingIRQ(DMA1_Channel5_IRQn);
  NVIC_ClearPendingIRQ(SPI3_IRQn);

  NVIC_EnableIRQ(EXTI9_5_IRQn );
  NVIC_EnableIRQ(SPI1_IRQn );
  NVIC_EnableIRQ(EXTI15_10_IRQn );
  NVIC_EnableIRQ(USART2_IRQn );
  NVIC_EnableIRQ(DMA1_Channel5_IRQn);
 }

此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 

继续请教香版主:

                                 调试时,ICSR寄存器中,SYSTICK中断标志已经设置了,而且TICKINT中断允许也设置了,可就是不能产生中断,为什么呢?现在两块不同的板子(一块是103RET6,一块是103ZET6),两个不同的人做的程序,都犯这个同样的毛病,而且程序在万利的板子上跑又没问题。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 

既然在板子上跑没问题,那你的问题是什么呢?

                                 前面说没有中断,后面又说没有问题,把我搞糊涂了。
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 

问题依旧

是在我自己做的的板子上中断不能正常跑,而在万利的板子上却能够正常进中断。我却找不出问题所在
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 

2+1

                                 两块自己做的板子,一块万利的板子。两块自己做的板子都犯同样的毛病。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 

回!

                                 同样的程序在人家的板子没有问题,在你的板子有问题。是不是可以说明你的板子的硬件有问题呢?
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 

SYSTICK在内核中,与外部没多大联系吧?

                                 只要电源电压稳定,外部振荡器或者系统时钟频率稳定,我想内核的东东都应该可以正常运行了吧,而且现在初步调试板子对IO端口操作都没问题。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 cpu版本是不是不一样呢
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 不细致的结果
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表