6485|7

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM8的COSMIC8編譯器問題 [复制链接]

COSMIC手冊說:中斷函數必須用@near修飾,但是生成的中斷文件里卻將向量定義成一個指向@far的指針????


以下是COSMIC手冊:
The STM8 architecture forces any interrupt function to be located in the
first 64K. The interrupt vector table containing 2-byte addresses, interrupt
functions declared in C must be declared with the @near modifier
if the vector table is also written in C.


以下是COSMIC自動生成的中斷文件:

/*    BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
 *    Copyright (c) 2007 STMicroelectronics
 */

typedef void @far (*interrupt_handler_t)(void);

struct interrupt_vector {
    unsigned char interrupt_instruction;
    interrupt_handler_t interrupt_handler;
};

@far @interrupt void NonHandledInterrupt (void)
{
    /* in order to detect unexpected events during development, 
       it is recommended to set a breakpoint on the following instruction
    */
    return;
}


extern void _stext();     /* startup routine */

struct interrupt_vector const _vectab[] = {
    {0x82, (interrupt_handler_t)_stext}, /* reset */
    {0x82, NonHandledInterrupt}, /* trap  */
    {0x82, NonHandledInterrupt}, /* irq0  */
    {0x82, NonHandledInterrupt}, /* irq1  */
    {0x82, NonHandledInterrupt}, /* irq2  */
    {0x82, NonHandledInterrupt}, /* irq3  */
    {0x82, NonHandledInterrupt}, /* irq4  */
    {0x82, NonHandledInterrupt}, /* irq5  */
    {0x82, NonHandledInterrupt}, /* irq6  */
    {0x82, NonHandledInterrupt}, /* irq7  */
    {0x82, NonHandledInterrupt}, /* irq8  */
    {0x82, NonHandledInterrupt}, /* irq9  */
    {0x82, NonHandledInterrupt}, /* irq10 */
    {0x82, NonHandledInterrupt}, /* irq11 */
    {0x82, NonHandledInterrupt}, /* irq12 */
    {0x82, NonHandledInterrupt}, /* irq13 */
    {0x82, NonHandledInterrupt}, /* irq14 */
    {0x82, NonHandledInterrupt}, /* irq15 */
    {0x82, NonHandledInterrupt}, /* irq16 */
    {0x82, NonHandledInterrupt}, /* irq17 */
    {0x82, NonHandledInterrupt}, /* irq18 */
    {0x82, NonHandledInterrupt}, /* irq19 */
    {0x82, NonHandledInterrupt}, /* irq20 */
    {0x82, NonHandledInterrupt}, /* irq21 */
    {0x82, NonHandledInterrupt}, /* irq22 */
    {0x82, NonHandledInterrupt}, /* irq23 */
    {0x82, NonHandledInterrupt}, /* irq24 */
    {0x82, NonHandledInterrupt}, /* irq25 */
    {0x82, NonHandledInterrupt}, /* irq26 */
    {0x82, NonHandledInterrupt}, /* irq27 */
    {0x82, NonHandledInterrupt}, /* irq28 */
    {0x82, NonHandledInterrupt}, /* irq29 */
};
此帖出自stm32/stm8论坛

最新回复

                                 這個方法好   详情 回复 发表于 2009-7-24 15:03
点赞 关注
 

回复
举报

55

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

沒有人知道嗎?

                                 如題
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

手册的名称和版本号是什么?

COSMIC STM8现在最新的好像是4.2.10,在 < C Cross Compiler User’s Guide
for ST Microelectronics STM8 > 里没查到
"The STM8 architecture forces any interrupt function to be located in the first 64K. The interrupt vector table containing 2-byte addresses, interrupt functions declared in C must be declared with the @near modifier if the vector table is also written in C."

在STM8的reference manual里也不曾见过这种说法.

此外这个观点是错误的,STM8的中断完全可以定位到0x10000以后,你试一下就知道了.

此帖出自stm32/stm8论坛
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

4
 

CXSTM8_UsersGuide

名稱:CXSTM8_UsersGuide.pdf,安裝完編譯器后,版本4.2,弟57頁:write a interrupt hands.  見文檔。
相关链接:https://bbs.eeworld.com.cn/upfiles/img/20097/200971710533189.zip
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 

这个文档out了

                                 我装的cosmic 也有这个文件,版本也是4.2,不过这一段已经被去掉了.建议你装个最新的版本吧.
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 

最新版显然是去cosmic网站去download

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 

你完全可以用如下方法做,不用考虑@far 或 @near。

#define NULL 0

extern void _stext();        /* startup routine */


void (* const @vector _vectab[32])() = {
    _stext,            /* RESET       */
    NULL,            /* TRAP        */
    NULL,            /* TLI         */
    NULL,            /* AWU         */
    NULL,            /* CLK         */
    NULL,            /* EXTI PORTA  */
    NULL,            /* EXTI PORTB  */
    NULL,            /* EXTI PORTC  */
    NULL,            /* EXTI PORTD  */
    NULL,            /* EXTI PORTE  */
    NULL,            /* CAN RX      */
    NULL,            /* CAN TX      */
    NULL,            /* SPI         */
    NULL,            /* TIMER 1 OVF */
    NULL,            /* TIMER 1 CAP */
    NULL,            /* TIMER 2 OVF */
    NULL,            /* TIMER 2 CAP */
    NULL,            /* TIMER 3 OVF */
    NULL,            /* TIMER 3 CAP */
    NULL,            /* USART TX    */
    NULL,            /* USART RX    */
    NULL,            /* I2C         */
    NULL,            /* LINUART TX  */
    NULL,            /* LINUART RX  */
    NULL,            /* ADC         */
    NULL,            /* TIMER 4 OVF */
    NULL,            /* EEPROM ECC  */
    NULL,            /* Reserved    */
    NULL,            /* Reserved    */
    NULL,            /* Reserved    */
    NULL,            /* Reserved    */
    NULL,            /* Reserved    */
    };
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

8
 

這個方法好

                                 這個方法好
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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