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 ST

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
   }
 }