2

我正在裸机级别对 micro:bit(在 Ada 中)进行编程,也就是说,我正在直接寻址 nrf51 寄存器。

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

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 显示了正确的逻辑电平)。

原理图在这里,nRF51 参考手册在这里

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

4

1 回答 1

4

结果是

  • 我使用 RTC1 来模拟丢失的 SysTick
  • RTC1 使用低频时钟
  • 我设置了低频时钟,就好像它正在运行一个晶体(它不是!)这意味着引脚 26 的 GPIO 功能被预期的 32,768 kHz 晶体输入接管,因此 GPIO 与其断开连接。

解决方法:设置低频时钟以运行高频时钟的 32,768 kHz 合成输出。

于 2018-07-12T18:34:10.893 回答