一、 使用MDK中的cmsis_os接口,需要查看以下代码是否被启用
/*
Setup SVC to reset value.
*/
__STATIC_INLINE void SVC_Setup(void)
{
#if (__ARM_ARCH_7A__ == 0U)
/* Service Call interrupt might be configured before kernel start */
/* and when its priority is lower or equal to BASEPRI, svc intruction */
/* causes a Hard Fault. */
NVIC_SetPriority(SVCall_IRQn, 0U);
#endif
}
/* Ensure SVC priority is at the reset value */
SVC_Setup();
原因:由于协议栈中也使用了SVC,这导致APP层调用SVC_Setup();导致协议栈异常。
二、 nrf52带BLE协议栈不能使用RTX5或者RTX4
原因大致跟注意(一)差不多
1. 在 RTX 和 Freertos 之外,Freertos 将是目前最好的解决方案。我们暂时在 SDK 中将 RTX 端口设置为“实验性”,因为它还不是 100% 稳定。
2. RTOS 与我们的软设备同时运行的想法在其核心是不理想的。软设备必须始终具有中断其他任务和运行时序关键协议任务的能力。这使得 RTOS 无法创建不能被中断的安全临界区。
3. 软设备在 nRF52 上启用 FPU 的情况下启用(无意,但这是提出的,将由软设备团队修复)如果启用了 FPU,则需要以不同方式处理 MBR 和软设备中的 SVC 处理程序。如果不与BLE softdevice 结合使用,RTX就能正常使用。
4. 原因是软件设备的 SVC 代码在启用 FPU 时也使用 MSP。对于 RTX 和软件设备,这会导致 MSP 冲突。
官方解释:当将 RTX 从 nRF51 移植到 nRF52 时,RTX 与软设备一起不再稳定。这是因为两者之间的架构差异。在我们使用新形式的临界区和无滴答空闲处理从头开始重新构建 nRF52 RTX 端口之前,支持已被移除。
三、 ANT协议栈问题
在 nRF51 兼容性矩阵中看到的,SDK 12.3.0 不支持 S310 软设备,支持该软设备的最后一个 SDK 是 SDK 10.0.0。
应该可以将 SDK 12.3 中的示例更改为使用 S310 软设备的 API,但没有可用的示例来说明这一点。S310 v3.0.0基于S110 v8.0.0和S210 v5.0.0。SDK 10.0.0 同时支持 S310 和 RTX,因此如果这是您要开发的应用程序,它应该是您应用程序的最佳起点。RTX 应该可以和 S110 softdevice 一起使用。
nRF SDK 不太支持 RTX(SDK 12.x 中仅支持 nRF51,并且在 SDK 13 中完全删除了对 nRF51 支持的支持)。我建议查看 FreeRTOS,它在最新的 SDK 中同时支持 nRF51 和 nRF52 系列。SDK v10.0.0以后的nRF51系列不支持ANT,如果要使用以后的SDK,需要更改softdevice调用或者切换到nRF52系列。
四、 NRF_CLOCK->EVENTS_LFCLKSTARTED 一直循环死等
1. 在 RTX_Conf_CM.c 的 os_tick_init() 中有一个循环,它不会结束。
while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0)
{
Do nothing.
}
因为上面的行试图用晶体启动低频时钟,而你没有一个,所以它永远不会启动。或者改为内部时钟。(将 CLOCK_LFCLKSRC_SRC_Xtal 更改为 CLOCK_LFCLKSRC_SRC_Synth)
上一篇:NORDIC 烧录BLE协议栈后不能用JLINK仿真bootloader问题及修改方案
下一篇:[nrf51][nrf52]设置快速广播和慢速广播
推荐阅读最新更新时间:2024-11-11 11:04
设计资源 培训 开发板 精华推荐
- 前轮驱动分板(灰度+驱动+红外)
- LT4356-1/LT4356-2 浪涌抑制器的典型应用
- AD9236BCP-80EBZ,用于评估 AD9236BCP 12 位、80 MSPS A/D 转换器的 LFCSP 评估板
- Telematics平台应用中Telemaco3P STA1385处理器的评估套件
- 用于单个 MOSFET 应用的 LTC4367IDD-1 过压电源保护控制器的典型应用
- 用于开/关控制应用的 AM2G-4803SZ 3.3V 2 瓦 DC-DC 转换器的典型应用
- rp2040 开发板
- STM32F769NI MCU探索套件
- 采用 VIPer12A PWM 控制器的恒流 (350mA) LED 驱动器
- 矽力杰SY8088AAC/SY8088IAAC dcdc验证板