首页 > 代码库 > NRF51822之32Mhz
NRF51822之32Mhz
硬件平台为微雪BLE400的(将原来的16mhz晶振改为32mhz。两个旁电容改为22pf)
以nRF51_SDK_10.0.0_dc26b5e\examples\ble_peripheral\ble_app_uart项目为例
在main.c中进行修改
#if defined( USB_SYSTEM_CLOCK_32MHZ) #define DEVICE_NAME "Nordic_UART_32mhz" /**< Name of device. Will be included in the advertising data. */ #else #define DEVICE_NAME "Nordic_UART" /**< Name of device. Will be included in the advertising data. */ #endif//USB_SYSTEM_CLOCK_32MHZ #if defined (USB_SYSTEM_CLOCK_32MHZ) /**@brief Function for Set the external high frequency clock source to 32 MHz . */ static void setClock( void ) { // Set the external high frequency clock source to 32 MHz NRF_CLOCK->XTALFREQ = 0xFFFFFF00; // Start the external high frequency crystal NRF_CLOCK->EVENTS_HFCLKSTARTED = 0; NRF_CLOCK->TASKS_HFCLKSTART = 1; // Wait for the external oscillator to start up while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0) {} } #endif//USB_SYSTEM_CLOCK_32MHZ /**@brief Application main function. */ int main(void) { uint32_t err_code; bool erase_bonds; uint8_t start_string[] = START_STRING;
#if defined (USB_SYSTEM_CLOCK_32MHZ) setClock(); #endif//USB_SYSTEM_CLOCK_32MHZ
// Initialize. APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false); uart_init(); buttons_leds_init(&erase_bonds); ble_stack_init(); gap_params_init(); services_init(); advertising_init(); conn_params_init(); printf("%s",start_string); err_code = ble_advertising_start(BLE_ADV_MODE_FAST); APP_ERROR_CHECK(err_code); // Enter main loop. for (;;) { power_manage(); } }
修改system_nrf51.C
#if defined( USB_SYSTEM_CLOCK_32MHZ) #define __SYSTEM_CLOCK (32000000UL) /*!< nRF51 devices use a fixed System Clock Frequency of 32MHz */ #else #define __SYSTEM_CLOCK (16000000UL) /*!< nRF51 devices use a fixed System Clock Frequency of 16MHz */ #endif//USB_SYSTEM_CLOCK_32MHZ
后面的测试的步骤和16mhz步骤相同。
NRF51822之32Mhz
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。