你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在定时器中断中发一次,就停一次(贴代码)

[复制链接]
beary 提问时间:2015-10-23 10:55 /
usart1和time2的初始化就补贴了,中断函数如下:,现在的效果就是一直在轮询发送,我从中断收到了一个char,他就发送,然后清空以后一直在发空字符,rx信号一直在跳,我想发送的时候跳信号,然后让定时器非使能状态,等到有字符的时候在进入使能状态
/*********************************************
定时器中断处理部分
*********************************************/


void TIM2_IRQHandler(void)
{
        printf("in the function %s\n",__func__);
        if(TIM_GetITStatus(TIM2, TIM_IT_Update)!=RESET)
        {
                USART_SendData(testChar);
                testChar = 0;
                TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
        }
}


/*********************************************
串口中断处理部分
*********************************************/


void USART1_IRQHandler(void)
{
  portBASE_TYPE TaskWoken = pdFALSE;
       
  if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
  {
    unsigned char RxChar;

    RxChar = USART_ReceiveData(USART1);
    xQueueSendFromISR(gattdQueueHandleUartRx, &RxChar, &TaskWoken);
        }

  portEND_SWITCHING_ISR(TaskWoken);

}


/*********************************************
主函数中的处理部分
*********************************************/
                                                                            /*********************************************/
                                                                            这里只是在接收字符,RxChar是在freeRTOS中接收一个char,这里没有问题,后来赋值给一个
                                                                              testChar
                                                                            /*********************************************/




                                        while (xQueueReceive(gattdQueueHandleUartRx, &RxChar, 0) == pdPASS)
                                        {       
                                                testChar = RxChar;
                                        }
                                        printf("now the testChar is %c\n",testChar);  //打印出来没有问题
                                        //在中断里会清空testchar,所以这里检测是否是0,如果不是0就使能定时器,请问有什么问题吗
                                        if(testChar != 0)
                                        {
                                                printf("in the enable\n");
                                                TIM_Cmd(TIM2, ENABLE);
                                        }
                                        else
                                        {
                                                printf("in the disable\n");
                                                TIM_Cmd(TIM2, ENABLE);
                                        }



收藏 评论1 发布时间:2015-10-23 10:55

举报

1个回答
埃斯提爱慕 回答时间:2015-10-23 15:00:18
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版