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

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

[复制链接]
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个回答
dsjsjf 回答时间:2015-10-23 15:00:18
接收到了直接发送好了,为什么要用定时器发呢?

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版