Hello, there was a strange problem in the mass production of my product. The previous batch of problems was less, about 0.5%. The later batch is quite serious, 45 of 500 products have this situation. After testing, it is normal to replace the MCU, and the problem is to follow the MCU.
Continue analysis, I found that the problem is associated with SDK11, but for my present products, upgrade the SDK quantity is large, and also don't know whether the new SDK will have other questions, we are more inclined to use SDK11. FREERTOS is run before, not have this problem, there is no running RTOS, found out the problem.There is no problem with SDK12.
It is easy to reproduce this problem using the following code,Changes through the routine ble_app_bps,nRF5_SDK_11.0.0_89a8197+s132_nrf52_2.0.1_softdevice.hex:
/**@brief Function for application main entry. */ int main(void) { uint32_t err_code; bool erase_bonds; // Initialize. timers_init(); // buttons_leds_init(&erase_bonds); ble_stack_init(); device_manager_init(erase_bonds); gap_params_init(); advertising_init(); services_init(); sensor_simulator_init(); conn_params_init(); // timer_init(); // timer_start(); pwm_init(); // Turn on PWM so that MCU is not in low power consumption pwm_start(); rtc_init(); // Set a soft timer to stop PWM after starting for 10 seconds rtc_start(); // Start execution. application_timers_start(); err_code = ble_advertising_start(BLE_ADV_MODE_FAST); APP_ERROR_CHECK(err_code); // Enter main loop. for (;;) { if(SecondCountRTC == 10) // Turn off the PWM after 10 seconds, and the MCU will crash or reset pwm_stop(); power_manage(); }