mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Revision:
630:825f75ca301e
Parent:
469:fc4922e0c183
--- a/targets/hal/TARGET_STM/TARGET_STM32F0/pwmout_api.c	Mon Sep 28 10:30:09 2015 +0100
+++ b/targets/hal/TARGET_STM/TARGET_STM32F0/pwmout_api.c	Mon Sep 28 10:45:10 2015 +0100
@@ -38,8 +38,7 @@
 
 static TIM_HandleTypeDef TimHandle;
 
-void pwmout_init(pwmout_t* obj, PinName pin)
-{
+void pwmout_init(pwmout_t* obj, PinName pin) {
     // Get the peripheral name from the pin and assign it to the object
     obj->pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
 
@@ -54,11 +53,21 @@
 #if defined(TIM2_BASE)
     if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE();
 #endif
+#if defined(TIM3_BASE)
     if (obj->pwm == PWM_3) __TIM3_CLK_ENABLE();
+#endif
+#if defined(TIM14_BASE)
     if (obj->pwm == PWM_14) __TIM14_CLK_ENABLE();
+#endif
+#if defined(TIM15_BASE)
     if (obj->pwm == PWM_15) __TIM15_CLK_ENABLE();
+#endif
+#if defined(TIM16_BASE)
     if (obj->pwm == PWM_16) __TIM16_CLK_ENABLE();
+#endif
+#if defined(TIM17_BASE)
     if (obj->pwm == PWM_17) __TIM17_CLK_ENABLE();
+#endif
 
     // Configure GPIO
     pinmap_pinout(pin, PinMap_PWM);
@@ -70,14 +79,12 @@
     pwmout_period_us(obj, 20000); // 20 ms per default
 }
 
-void pwmout_free(pwmout_t* obj)
-{
+void pwmout_free(pwmout_t* obj) {
     // Configure GPIO
     pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 }
 
-void pwmout_write(pwmout_t* obj, float value)
-{
+void pwmout_write(pwmout_t* obj, float value) {
     TIM_OC_InitTypeDef sConfig;
     int channel = 0;
     int complementary_channel = 0;
@@ -101,7 +108,41 @@
     sConfig.OCIdleState  = TIM_OCIDLESTATE_RESET;
     sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
 
-#if defined (TARGET_STM32F030R8) || defined (TARGET_STM32F051R8)
+#if defined (TARGET_STM32F031K6)
+    switch (obj->pin) {
+        // Channels 1
+        case PA_4:
+        case PA_6:
+        case PA_8:
+        case PB_4:
+            channel = TIM_CHANNEL_1;
+            break;
+        // Channels 1N
+        case PB_6:
+        case PB_7:
+            channel = TIM_CHANNEL_1;
+            complementary_channel = 1;
+            break;
+        // Channels 2
+        case PA_7:
+        case PA_9:
+        case PB_5:
+            channel = TIM_CHANNEL_2;
+            break;
+        // Channels 3
+        case PA_10:
+        case PB_0:
+            channel = TIM_CHANNEL_3;
+            break;
+        // Channels 4
+        case PA_11:
+        case PB_1:
+            channel = TIM_CHANNEL_4;
+            break;
+        default:
+            return;
+    }
+#elif defined (TARGET_STM32F030R8) || defined (TARGET_STM32F051R8)
     switch (obj->pin) {
         // Channels 1
         case PA_4:
@@ -198,8 +239,7 @@
     }
 }
 
-float pwmout_read(pwmout_t* obj)
-{
+float pwmout_read(pwmout_t* obj) {
     float value = 0;
     if (obj->period > 0) {
         value = (float)(obj->pulse) / (float)(obj->period);
@@ -207,18 +247,15 @@
     return ((value > (float)1.0) ? (float)(1.0) : (value));
 }
 
-void pwmout_period(pwmout_t* obj, float seconds)
-{
+void pwmout_period(pwmout_t* obj, float seconds) {
     pwmout_period_us(obj, seconds * 1000000.0f);
 }
 
-void pwmout_period_ms(pwmout_t* obj, int ms)
-{
+void pwmout_period_ms(pwmout_t* obj, int ms) {
     pwmout_period_us(obj, ms * 1000);
 }
 
-void pwmout_period_us(pwmout_t* obj, int us)
-{
+void pwmout_period_us(pwmout_t* obj, int us) {
     TimHandle.Instance = (TIM_TypeDef *)(obj->pwm);
 
     float dc = pwmout_read(obj);
@@ -243,18 +280,15 @@
     __HAL_TIM_ENABLE(&TimHandle);
 }
 
-void pwmout_pulsewidth(pwmout_t* obj, float seconds)
-{
+void pwmout_pulsewidth(pwmout_t* obj, float seconds) {
     pwmout_pulsewidth_us(obj, seconds * 1000000.0f);
 }
 
-void pwmout_pulsewidth_ms(pwmout_t* obj, int ms)
-{
+void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
     pwmout_pulsewidth_us(obj, ms * 1000);
 }
 
-void pwmout_pulsewidth_us(pwmout_t* obj, int us)
-{
+void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
     float value = (float)us / (float)obj->period;
     pwmout_write(obj, value);
 }