![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Simple "hello world" style program for X-NUCLEO-IKS01A1 MEMS Inertial
Dependencies: BLE_API X_NUCLEO_IDB0XA1 X_NUCLEO_IKS01A1 mbed
Fork of HelloWorld_IKS01A1 by
Diff: main.cpp
- Revision:
- 8:1c6281289d67
- Parent:
- 7:4985455162fc
--- a/main.cpp Sun Nov 15 07:30:17 2015 +0000 +++ b/main.cpp Sun Nov 15 09:00:40 2015 +0000 @@ -5,6 +5,10 @@ #include "ble/services/HeartRateService.h" #include "ble/services/BatteryService.h" #include "ble/services/DeviceInformationService.h" +//#include "stm32f4xx_conf.h" +//#include "stm32f4xx.h" +#include "led_RGB.h" +#include "main.h" BLE ble; DigitalOut led1(LED1); @@ -14,6 +18,8 @@ GattService::UUID_DEVICE_INFORMATION_SERVICE}; static volatile bool triggerSensorPolling = false; +uint8_t clock_source; + void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) { ble.gap().startAdvertising(); // restart advertising @@ -39,10 +45,37 @@ pc.baud(115200); printf("\r\n--- Starting new run ---\r\n"); + RCC_DeInit(); + RCC_HSICmd(ENABLE); + while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); + RCC_PLLConfig(RCC_PLLSource_HSI, 8, 336, 4, 7); + RCC_PLLCmd(ENABLE); + while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET); + RCC_HCLKConfig(RCC_SYSCLK_Div1); + RCC_PCLK2Config(RCC_HCLK_Div2); //APB2 84MHz/2 = 42MHz + RCC_PCLK1Config(RCC_HCLK_Div2); + clock_source = RCC_GetSYSCLKSource(); + if (clock_source !=0) + RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); + RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA | + RCC_AHB1Periph_GPIOB, + ENABLE); + RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3 | + RCC_APB1Periph_TIM4 | + RCC_APB1Periph_TIM2, + ENABLE); + RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, + ENABLE); + + Blue_Red_Setup(); + Green_Setup(); + + + magnetometer->ReadID(&id); printf("LIS3MDL magnetometer = 0x%X\r\n", id); - led1 = 1; + led1 = 1; Ticker ticker; ticker.attach(periodicCallback, 1); // blink LED every second @@ -100,5 +133,42 @@ } else { ble.waitForEvent(); // low power wait for event } + switch (note){ + case DO: TIM_SetCompare4(TIM3, 255); //RED + TIM_SetCompare1(TIM4, 0); //GREEN + TIM_SetCompare3(TIM3, 0); //BLU + break; + case RE: TIM_SetCompare4(TIM3, 255); //RED + TIM_SetCompare1(TIM4, 153); //GREEN + TIM_SetCompare3(TIM3, 0); //BLU + break; + case MI: TIM_SetCompare4(TIM3, 255); //RED + TIM_SetCompare1(TIM4, 255); //GREEN + TIM_SetCompare3(TIM3, 0); //BLU + break; + case FA: TIM_SetCompare4(TIM3, 0); //RED + TIM_SetCompare1(TIM4, 255); //GREEN + TIM_SetCompare3(TIM3, 0); //BLU + break; + case SOL: TIM_SetCompare4(TIM3, 0); //RED + TIM_SetCompare1(TIM4, 0); //GREEN + TIM_SetCompare3(TIM3, 255); //BLU + break; + case LA: TIM_SetCompare4(TIM3, 51); //RED + TIM_SetCompare1(TIM4, 0); //GREEN + TIM_SetCompare3(TIM3, 153); //BLU + break; + case SI: TIM_SetCompare4(TIM3, 255); //RED + TIM_SetCompare1(TIM4, 0); //GREEN + TIM_SetCompare3(TIM3, 255); //BLU + break; + case DO1: TIM_SetCompare4(TIM3, 255); //RED + TIM_SetCompare1(TIM4, 255); //GREEN + TIM_SetCompare3(TIM3, 255); //BLU + break; + case default: + TIM_SetCompare4(TIM3, 0); //RED + TIM_SetCompare1(TIM4, 0); //GREEN + TIM_SetCompare3(TIM3, 0); //BLU } }