打印

STM32(cortex_m3)的中断问题

[复制链接]
4808|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
michaelc21|  楼主 | 2007-11-13 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于 STM32(cortex_m3)的中断问题。

我正在使用 STM32 Primer 编写 调试 一些小程序 (例如 LED 发光)。

不使用按键 中断, 是 容易 编写的。

现在 的问题是 不 理解 STM32 的整个中断机制。

在程序 是怎样设置的呢?(例如定时 中断,使 LED 一闪一亮的。)

为了产生中断, 要做哪一些设置? (例如 SystemTick 中断 ) 

是怎样跟 程序联系起来?(好象没有调用语句 SysTickHandler(),只做了定义,)

希望各位讨论一下。
 
有 范 例 程序吗?   我的邮箱 :lugf21@163.com. 谢谢。

我看了 Primer 本身 的 CIRCLE OS ,  设置了 中断向量,但不知怎样调用。  想   
沙发
ST_ARM| | 2007-11-14 09:25 | 只看该作者

参考STM32的软件库中的例程

如题

使用特权

评论回复
板凳
michaelc21|  楼主 | 2007-11-14 10:42 | 只看该作者

其中一个是Primer的例程,不用中断的, 而另外的那个是带OS

谢谢。
目前 想找一个 简单的 带中断 的可以允许 的 小程序修改。
关于中断,例如定义了:
void SysTickHandler(void)

  ...........
}
怎样使 这个 函数成为 中断处理 程序 呢?
怎样 设置 关联 对应 中断 向量 ?
当然 在之前 应该 打开中断 触发 源,假如触发中断了,
可以调用到这个 SysTickHandler( ) 吗?

使用特权

评论回复
地板
浪淘沙| | 2007-11-14 12:44 | 只看该作者

参考STM32的软件库中的例程

请进入ST网站上的这一页:http://www.st.com/mcu/familiesdocs-110.html
在Firmware栏目下有“ARM-based 32-bit MCU STM32F101xx and STM32F103xx firmware library ”,请下载它的软件包和说明文件。

打开上面下载的软件包并放到你的系统中后,在STM32F10xFWLib的目录下请双击文件“stm32lib_contents.htm”,你就可以看到所有例子程序的列表和简单说明;有关嵌套矢量中断控制器(NVIC)的例子有以下这些:
Example1: Use of the Nested Vectored Interrupt Controller (NVIC) and priority mechanism (PreemptionPriority , SubPriority)
Example2: Use of the Nested Vectored Interrupt Controller (NVIC) and IRQ Channels configuration
Example3: Use of the Nested Vectored Interrupt Controller (NVIC) and system handlers
Example4: Use the NVIC firmware library to demonstrate the Cortex-M3 low power modes capabilities (WFE and WFI). 
Example5: Enter the system to WFI mode with DMA transfer enabled and wake-up from this mode by the DMA End of Transfer interrupt.
Example6: Use the NVIC firmware library to set the CortexM3 vector table in a specific address other than default.
This can be used to build program which will be loaded into Flash memory by an application previously programmed in the sector0 of the Flash memory. Such application can be In-Application Programming (IAP, through USART) or Device Firmware Upgrade (DFU, through USB).
 
你可以在研究完这些例子后,再参考这些例子进行讨论。

使用特权

评论回复
5
michaelc21|  楼主 | 2007-11-14 13:45 | 只看该作者

好的,谢谢你, 浪大哥。


  我正在  下载、 学习 其中的 例程。

  初学,哈哈,就是觉得 中断 是最重要的, 所以要 深入理解。 

  学习中....

  谢谢。 

使用特权

评论回复
6
mojingxian| | 2007-11-22 15:46 | 只看该作者

RE:STM32(cortex_m3)的中断问题

关于中断,例如定义了:
void SysTickHandler(void)

  ...........
}
.怎样使 这个 函数成为 中断处理 程序 呢?怎样 设置 关联 对应 中断 向量 ?

----打开stm32f10x_vector.c,在文件中定义了中断向量表:
const intvec_elem __vector_table[],这个表和<stm32 Reference>第6.1.2节中断和异常 表27向量表 是一一对应的。也就是说在stm32f10x_vector.c中定义了所有中断和异常的入口地址,要使用某个函数成为某个中断程序,只要在对应的入口地址上加入对应函数地址就可以了。例如定义了一个System tick中断(不使用它原来的SysTickHandler()函数):
void IT1(void)
{
   .....
}
要使用IT1()成为中断函数,修改Sstm32f10x_vector.c如下:
const intvec_elem __vector_table[] =
{
  .......
  IT1,//SysTickHandler,    /*中断入口与处理程序对应*/
  .....
}

使用特权

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

本版积分规则

7

主题

31

帖子

0

粉丝