This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dsp c5000 通用IO 如何单独的 操作?

Expert 2137 points

我在查阅dsp 28335资料的时候,它的io口是可以单独的操作,见附图1;dsp--c5517的通用io口可以单独操作吗?

若是可以,如何单独操作?

  • 可以单独操作,用"|"或“&”与对位操作。

  • 老师 您说的是这样的吗

    #define LED1_ON     IODATAOUT1=(IODATAOUT1|0x0200)
    #define LED1_OFF    IODATAOUT1=(IODATAOUT1&0xFDFF)

    #define LED2_ON      IODATAOUT1=(IODATAOUT1|0x0100)
    #define LED2_OFF    IODATAOUT1=(IODATAOUT1&0xFEFF)

    #define TEST_ON      IODATAOUT1=(IODATAOUT1|0x0010)
    #define TEST_OFF     IODATAOUT1=(IODATAOUT1&0xFFEF)

  • 我现在测试程序

    //定时器中断

    interrupt void gptIsr() //定时器0中断

    {

     使用  TEST_ON  TEST_OFF  产生10ms的方波

    }

    //主函数

    while(1)

    {

    LED1_OFF ;LED2_OFF ;

    }

    若是主函数LED1_OFF ;LED2_OFF ;这个屏蔽。 TEST 就是一个标准的10ms为周期方波信号。

     但是若是加了LED1_OFF ;LED2_OFF ;就不是标准的方波信号了。见附图2.

    我个人分析是由于在处理LED1_OFF ;LED2_OFF ;这个语句的时候 突然来定时器中断了,而此时IODATAOUT1这个寄存器的值被挂起,而中断中TEST_ON      --TEST_OFF     又使用到IODATAOUT1这个寄存器,与主函数中的IODATAOUT1寄存器冲突导致的。

    老师不知道我这样的分析是否正确?

  • 你好,我的DSP定时中断怎么调不出来啊,能不能参考下您的定时器代码,我用的也是5000的。谢谢。