|
这段代码是IDE+DAM接收串口数据的,为什么要先进入接收非空中断后然后才开启DMA传输?不会造成第一个数据丢失吗?
- void BSP_Ser2_ISR_Handler (void)
- {
- uint8_t clear=clear;
- FlagStatus idle_status;
- if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET){
- USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
- Ser2_RXDMA_Init();//开启DMA接收
- }
-
- idle_status = USART_GetFlagStatus(USART2, USART_FLAG_IDLE);
- if (idle_status == SET) {
- clear = USART2->SR;
- clear = USART2->DR;
-
- USART_ITConfig(USART2, USART_IT_IDLE, DISABLE);
-
- if(Ser2_read_f){
- BSP_OS_SemPost(&BSP_Ser2RxWait);
- Ser2_read_cnt = CMD_LEN_MAX - DMA_GetCurrDataCounter(DMA1_Channel6);
- }
-
- DMA_Cmd(DMA1_Channel6, DISABLE);
- DMA_DeInit(DMA1_Channel6);
- USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
- }
-
- }
复制代码 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|