始终按下micro:bit上的按钮B

时间:2018-07-11 19:04:15

标签: bbc-microbit

我正在裸机上编程一个micro:bit(以Ada表示),也就是说,我正在直接寻址nrf51寄存器。

我对GPIO引脚17的按钮A没问题:它配置为

dir => input, 
input => connect,
pull => pullup,
drive => s0s1, 
sense => disabled

当按下按钮时,IN寄存器的第17位为low,释放时为high

但是,对于按钮B,GPIO引脚26的配置完全相同,IN寄存器位26始终为low

工厂图像可以识别按钮A和B。

按钮B正确连接到边缘连接器插针11(已通过DVM检查边缘连接器的电压电平)。

我想知道为什么我必须指定pullup,因为板上已经有一个10k的上拉电阻(并且DVM显示适当的逻辑电平)。

原理图是here,nRF51参考手册是here

我发现了以前的示意图,其中GPIO引脚26与磁力计共享,这可能相关吗?

1 个答案:

答案 0 :(得分:4)

证明

  • 我使用RTC1模拟缺少的SysTick
  • RTC1使用低频时钟
  • 我将低频时钟设置为好像在晶体上运行一样(不是!),这意味着引脚26的GPIO功能由预期的32,768 kHz晶体输入所接管,因此GPIO与之断开连接。

治愈:设置低频时钟以使高频时钟的32,768 kHz综合输出停止运行。