nRF52820不能全部擦除用以下方式处理
因为VBUS供电的话经过芯片内部升压默认值是1.8V,此时VDD应该是1.8V供电,所以擦除烧录的时候电压不稳定导致的
可以软件配置高于1.8V以上就可以
在代码初始化加这段代码就可以
// USB CODE END static void gpio_output_voltage_setup(void) { // Configure UICR_REGOUT0 register only if it is set to default value. if ( (NRF_UICR->REGOUT0 & UICR_REGOUT0_VOUT_Msk) == (UICR_REGOUT0_VOUT_DEFAULT << UICR_REGOUT0_VOUT_Pos) ) { NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen; while (NRF_NVMC->READY == NVMC_READY_READY_Busy){} NRF_UICR->REGOUT0 = (NRF_UICR->REGOUT0 & ~((uint32_t)UICR_REGOUT0_VOUT_Msk)) | (UICR_REGOUT0_VOUT_3V0 << UICR_REGOUT0_VOUT_Pos); NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren; while (NRF_NVMC->READY == NVMC_READY_READY_Busy){} // System reset is needed to update UICR registers. NVIC_SystemReset(); } }
然后在 APP中初始化的时候调佣:
/** @brief Application main function. */ int main(void) { ret_code_t ret; static const app_usbd_config_t usbd_config = { .ev_state_proc = usbd_user_ev_handler }; gpio_output_voltage_setup(); // 执行该语句将输出 3.3V(实际为 3.0) // Initialize. log_init(); timers_init();
本文来自博客园,作者:merafour,转载请注明原文链接:https://www.cnblogs.com/merafour/p/17824344.html

浙公网安备 33010602011771号