CC2540两个问题,DMA传送结束的标志位是哪个?以及程序中电量检测的电压值和实际值得误差是什么原因?

核心提示1.串口轮询部分。通过如下代码调串口回调函数。if (cnt >= HAL_UART_DMA_FULL){evt = HAL_UART_RX_FULL;}else if (cnt >= HAL_UART_DMA_HIGH){evt = HA

1.串口轮询部分。通过如下代码调串口回调函数。if (cnt >= HAL_UART_DMA_FULL){evt = HAL_UART_RX_FULL;}else if (cnt >= HAL_UART_DMA_HIGH){evt = HAL_UART_RX_about_FULL;PxOUT |= HAL_UART_Px_RTS;}else if (cnt && !dmaCfg.rxTick){evt = HAL_UART_RX_TIMEOUT;但是我们希望当收到一条指令,大概8~10个字节,接收完就调回调函数。如果设置if (cnt >= 8){evt = HAL_UART_RX_IND;}则会出现DMA未接收完就调用回调函数的情况,则会出现接收错误。如果将cnt>24,则势必会在缓冲区堵塞一条指令。想问一下,如何判断DMA串口接收完成?我理解的是根据DMAIRQ寄存器中,DMAIF的状态位来判断,但硬件调试的过程中,一直没发现变为1的情况,所以,无法用来判断接收完成。2.程序中,电源电压检测部分,BattMeasure函数中,HalAdcSetReference( HAL_ADC_REF_125V );adc = HalAdcRead( HAL_ADC_CHANNEL_VDD, HAL_ADC_RESOLUTION_10 );adc测量的数,换算成电压值后,和用稳压电源输出的电压值(搭配着万用表测量电压),有大致0.1V的误差,当电压逼近2.0V时,误差会减小。很想问一下,这是什么原因?是CC2540adc检测过程中不可避免的误差还是什么原因造成的?如果恒定误差有0.1V的话,在程序中电量检测部分,可以做出调整,否则低电量报警也会导致误差。希望能有一个官方的说法。非常希望技术支持给予答复,非常感谢您的帮助。

C:WINDOWSsystem32config 里都是包含了用于引导的注册表储备, 还有可通过事件查看器查看的系统, 安全以及应用程序日志文件.

以下是 13 个重要的文件:

AppEvent.Evt

default

default.LOG

SAM

SAM.LOG

SecEvent.Evt

SECURITY

SECURITY.LOG

software

software.LOG

SysEvent.Evt

system

system.LOG

其中SAM是重要的文件。建议不要手动删除

 
友情链接
鄂ICP备19019357号-22