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.

[参考译文] CC2640R2F:蓝牙论坛

Guru**** 1831170 points
Other Parts Discussed in Thread: CC2640R2F
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1335737/cc2640r2f-bluetooth-forum

器件型号:CC2640R2F

您好!

CC2640R2F 引脚中断一次后不工作

请提供任何建议。

感谢您

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您与我们联系。

    您能否详细介绍所使用的硬件设计? 显示引脚的硬件设计的原理图将会很有帮助。

    另外、请说明使用正边沿和负边沿时同一问题是否会重现。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Clement

    Im 使用 CC2640R2F - DIO_4测试中断

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您告诉我、但硬件设计在 DIO_4上是什么样的? 我想看看如何使用创建中断的按钮、以便我可以重现并提供指导。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    开关一端连接到 DIO_4、另一端连接到+3V

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    以下是我对您的描述的理解。 您能确认吗? 您是否还能确认此处没有其他组件起作用? 我提出这个问题的原因是、DIO4用于 CC2640R2F LaunchPad 参考设计中的 I2C。

    假设我的理解正确、您应该确保启用了内部下拉。

    下面是我为你写的一些代码:

    #include <unistd.h>
    
    /* Driver Header files */
    #include <ti/drivers/PIN.h>
    #include <ti/devices/cc26x0r2/driverlib/ioc.h>
    
    /* Example/Board Header files */
    #include "Board.h"
    
    /* Pin driver handles */
    static PIN_Handle buttonPinHandle;
    
    /* Global memory storage for a PIN_Config table */
    static PIN_State buttonPinState;
    
    PIN_Config buttonPinTable[] = {
        IOID_4  | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_EN | PIN_PULLDOWN | PIN_IRQ_POSEDGE,
        PIN_TERMINATE
    };
    
    /*
     *  ======== buttonCallbackFxn ========
     */
    void buttonCallbackFxn(PIN_Handle handle, PIN_Id pinId) {
    
        // Your code
    }
    
    /*
     *  ======== mainThread ========
     */
    void *mainThread(void *arg0)
    {
    
    
        buttonPinHandle = PIN_open(&buttonPinState, buttonPinTable);
        if(!buttonPinHandle) {
            /* Error initializing button pins */
            while(1);
        }
    
        /* Setup callback for button pins */
        if (PIN_registerIntCb(buttonPinHandle, &buttonCallbackFxn) != 0) {
            /* Error registering button callback function */
            while(1);
        }
    
        /* Loop forever */
        while(1) {
            sleep(1000);
        }
    }
    

    我希望这将有所帮助、

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    void buttonCallbackFxn (PIN_Handle handle、PIN_ID pinId){

    if (PIN_getInputValue (Rx_intr_pin)== 1){

    标志= 1;


    void *mainThread (void *arg0)
    {

    uint8_t cnt = 0;

    uint8_t flag = 0;


    buttonPinHandle = PIN_open (&buttonPinState、buttonPinTable);
    if (!buttonPinHandle){
    /*初始化按钮针脚时出错*/
    while (1);

    /*按钮引脚的设置回调*/
    if (PIN_registerIntCb(buttonPinHandle,&buttonCallbackFxn)!= 0){
    /*注册按钮回调函数时出错*/
    while (1);

    /*永久循环*/


    while (1){

    if (flag ==1)

    标志= 0;

    CNT++;

    使用此格式时,计数不会递增超过1

    仅发生一次中断

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已经审阅了您的代码、有一些地方看起来有点奇怪。

    1 -我想问、为什么在 mainThread 中局部声明该标志并且对其外部的访问(在 buttonCallbackFxn 中)。 外观不正确。

    2-我想 cnt 和 flag 应该是易失性变量、否则编译器可能会优化 while (1)循环中对 flag 的访问。

    3-您能否定义 cnt2并在每次输入 buttonCallbackFxn 时将其递增?

    4-您能否确保 while (1)循环不会消耗所有 CPU 时间? 这可以使用信标(而不是"标志")或通过向睡眠状态添加调用来实现。

    我希望这将有所帮助、

    此致、  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想问一下、为什么在 mainThread 中局部声明该标志并在其外部进行访问(在 buttonCallbackFxn 中)。 外观不正确。

    是,它仅是全局变量。 我只在外面宣布了它。

    您能否定义 cnt2并在每次输入 buttonCallbackFxn 时将其递增?

    将尽快检查并回复

    感谢您