查看: 3476|回复: 4

[其他] 使用中断处理uart0上的数据,有什么问题?

[复制链接]

该用户从未签到

22

主题

93

帖子

0

新手上路

Rank: 1

积分
192
最后登录
1970-1-1
发表于 2012-4-8 19:42:07 | 显示全部楼层 |阅读模式
我学习使用中断来处理uart0上的数据,可是不能进入中断函数,
我的步骤如下,烦请高手帮我看下,我的问题出现在哪里??
我的方法是按照一个帖子上说明来做的,该帖子的出处在https://www.eefocus.com/bluewave/blog/08-03/144744_f3449.html
我使用的步骤如下:
 1.在mcf5225x_vectors.s中定义中断
    #define _uart0_handler    uart0_handler
   
    .extern _uart0_handler
    /*Exception Vector Table */
    VECTOR_TABLE:
    _VECTOR_TABLE:
    INITSP: .long ___SP_INIT /* Initial SP */
    INITPC:     .long _asm_startmeup /* Initial PC */
    vector02: .long _asm_exception_handler /* Access Error */
    vector03: .long _asm_exception_handler /* Address Error*/
    .......    
    vector77: .long _uart0_handler                    计算中断的位置 55+64=119=0x77,不知道是否有问题??
    .......
 2. 在MCF52259_UART_driver.h中声明中断函数
    __declspec(interrupt:0) void uart0_handler(void);  此写法和void __declspec(interrupt) uart0_handler(void)有什么区别??
    定义开启中断宏:
    #define EnableInterrupts asm { move.w SR,D0; andi.l #0xF8FF,D0; move.w D0,SR;  }
 3. 在MCF52259_UART_driver.c中的
    __declspec(interrupt:0) void uart0_handler(void)函数里处理了
    如果接收到字符就将其字符输出.
 4. 在MCF52259_UART_driver.c中对Uart0口进行初始化的函数如下:
    void uart0_init(uint32 baudrate)
    {  //设置中断的级别和优先级
        MCF_INTC0_ICR55 = MCF_INTC_ICR_IL(0x3) |MCF_INTC_ICR_IP(0x3);
        MCF_INTC0_IMRH &= ~MCF_INTC_IMRH_INT_MASK55;
        MCF_INTC0_IMRL &= ~MCF_INTC_IMRL_MASKALL;     //不知道在这里设置中断属性是否合适??
    
        MCF_GPIO_PUAPAR=MCF_GPIO_PUAPAR_UTXD0_UTXD0|MCF_GPIO_PUAPAR_URXD0_URXD0; 
        //Reset Transmitter Receiver Mode Register
        .....                          
        //Set UART interrupts  不确定这样确定uart中断是否合适?
        MCF_UART0_UIMR=0 
                      |MCF_UART_UIMR_TXRDY|MCF_UART_UIMR_FFULL_RXRDY
                      |MCF_UART_UIMR_DB|MCF_UART_UIMR_COS;
                  
        //initialize the input enable control (IEC bit)
        MCF_UART0_UACR = MCF_UART_UACR_IEC;    
        //Set Rx and Tx buad by SYSTERM CLOCK    
        //No parity,8bit data  
        //1 bit stop 
        //set buad rate   
        //Enable Tx/Rx  
    }
5. 在main.c函数中
   void main (void)
    {   //开启中断
 EnableInterrupts;
        //uart init
        uart0_init();
         while(1)
           {
            }
     }
   
如上设置后,不能进入中断函数uart0_handler中,不知道原因在何处??
希望有高手帮我解决下,先谢谢各位了!!!!!
 
我知道答案 目前已有3人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-9 17:14:19 | 显示全部楼层

    RE:使用中断处理uart0上的数据,有什么问题?

    你先确定一下,串口能不能发送数据,最好把的你的工程贴出来。这样好分析代码。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22

    主题

    93

    帖子

    0

    新手上路

    Rank: 1

    积分
    192
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-9 17:22:44 | 显示全部楼层

    回复:使用中断处理uart0上的数据,有什么问题?

    回复第 2 楼 于2012-04-09 17:14:19发表:
    你先确定一下,串口能不能发送数据,最好把的你的工程贴出来。这样好分析代码。 

    串口可以发送数据的,如果不用中断的话是正常的!
    我使用FREESCALECODE\MCF5225x_SAMPLE_CODE\build\cw\m52259evb\M52259EVB_timer_interrupt.mcp 例子也发现不能在我的板子上产生中断.
    已经确认过: 控制灯的pin是正确的,如果使用延时的方法的话,灯是可以正常闪的!
    这种情况会是硬件的问题吗??
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-10 09:24:54 | 显示全部楼层

    RE:使用中断处理uart0上的数据,有什么问题?

    是7.1下面的吗?我这没有7.1,家里有。最好把这个工程发出来。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22

    主题

    93

    帖子

    0

    新手上路

    Rank: 1

    积分
    192
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-10 12:53:53 | 显示全部楼层

    回复:使用中断处理uart0上的数据,有什么问题?

    回复第 4 楼 于2012-04-10 09:24:54发表:
    是7.1下面的吗?我这没有7.1,家里有。最好把这个工程发出来。 

    谢谢安斑竹了,我的中断可以使用了.
    原因是在向量表里注册的时候位置没有给对!
    真的要多谢你的帮助...
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 07:56 , Processed in 0.095634 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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