完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在阅读EK-TM4C123GXL关于FreeRTOS的例程时,有个地方没搞懂。下面这个函数用来检测按键状态,其中ui8SwitchClockA和ui8SwitchClockB的作用是什么?
该函数是否能实现软件去抖动,如何实现的?谢谢指导。 uint8_t ButtonsPoll(uint8_t *pui8Delta, uint8_t *pui8RawState) [ uint32_t ui32Delta; uint32_t ui32Data; static uint8_t ui8SwitchClockA = 0; static uint8_t ui8SwitchClockB = 0; // // Read the raw state of the push buttons. Save the raw state // (inverting the bit sense) if the caller supplied storage for the // raw value. // ui32Data = (ROM_GPIOPinRead(BUTTONS_GPIO_BASE, ALL_BUTTONS)); if(pui8RawState) [ *pui8RawState = (uint8_t)~ui32Data; ] // // Determine the switches that are at a different state than the debounced // state. // ui32Delta = ui32Data ^ g_ui8ButtonStates; // // Increment the clocks by one. // ui8SwitchClockA ^= ui8SwitchClockB; ui8SwitchClockB = ~ui8SwitchClockB; // // Reset the clocks corresponding to switches that have not changed state. // ui8SwitchClockA &= ui32Delta; ui8SwitchClockB &= ui32Delta; // // Get the new debounced switch state. // g_ui8ButtonStates &= ui8SwitchClockA | ui8SwitchClockB; g_ui8ButtonStates |= (~(ui8SwitchClockA | ui8SwitchClockB)) & ui32Data; // // Determine the switches that just changed debounced state. // ui32Delta ^= (ui8SwitchClockA | ui8SwitchClockB); // // Store the bit mask for the buttons that have changed for return to // caller. // if(pui8Delta) [ *pui8Delta = (uint8_t)ui32Delta; ] // // Return the debounced buttons states to the caller. Invert the bit // sense so that a '1' indicates the button is pressed, which is a // sensible way to interpret the return value. // return(~g_ui8ButtonStates); ] |
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
697 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
607 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1069 浏览 1 评论
763 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
531 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
175浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
136浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
130浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
72浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 00:47 , Processed in 0.781808 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号