Commit 7e631bd0 authored by Erwan Gouriou's avatar Erwan Gouriou Committed by Kumar Gala
Browse files

samples: pwm: update PWM sample to support ST Nucleo boards



Change-Id: I483f70a6b55b42105e9a3366f8735903e23be294
Signed-off-by: default avatarErwan Gouriou <erwan.gouriou@linaro.org>
parent 21c362e0
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -11,3 +11,11 @@ Arduino 101 and Quark D2000 CRB
===========
You will need to connect the LED to ground and PWM0 via the shield.
You may need a current limiting resistor. See your LED datasheet.

Nucleo_F401RE and Nucleo_L476RG
===============================
Connect PWM2(PA0) to LED

Nucleo_F103RB
=============
Connect PWM1(PA8) to LED
+15 −3
Original line number Diff line number Diff line
@@ -25,6 +25,17 @@
#include <device.h>
#include <pwm.h>

#if defined(CONFIG_SOC_STM32F401XE) || defined(CONFIG_SOC_STM32L476XX)
#define PWM_DRIVER "PWM_2"
#define PWM_CHANNEL 1
#elif CONFIG_SOC_STM32F103XB
#define PWM_DRIVER "PWM_1"
#define PWM_CHANNEL 1
#else
#define PWM_DRIVER "PWM_0"
#define PWM_CHANNEL 0
#endif

/* in micro second */
#define MIN_PERIOD	2000

@@ -39,14 +50,15 @@ void main(void)

	printk("PWM demo app-blink LED\n");

	pwm_dev = device_get_binding("PWM_0");
	pwm_dev = device_get_binding(PWM_DRIVER);
	if (!pwm_dev) {
		printk("Cannot find PWM_0!\n");
		printk("Cannot find %s!\n", PWM_DRIVER);
		return;
	}

	while (1) {
		if (pwm_pin_set_usec(pwm_dev, 0, period, period / 2)) {
		if (pwm_pin_set_usec(pwm_dev, PWM_CHANNEL,
				     period, period / 2)) {
			printk("pwm pin set fails\n");
			return;
		}
+2 −2
Original line number Diff line number Diff line
[test]
build_only = true
tags = apps
arch_whitelist = x86
platform_whitelist = arduino_101 quark_d2000_crb
arch_whitelist = x86 arm
platform_whitelist = arduino_101 quark_d2000_crb nucleo_f103rb nucleo_f401re nucleo_l476rg
+8 −0
Original line number Diff line number Diff line
@@ -11,3 +11,11 @@ Arduino 101 and Quark D2000 CRB
You will need to connect the LED to ground and PWM0 via
the shield. You may need a current limiting resistor. See
your LED datasheet.

Nucleo_F401RE and Nucleo_L476RG
===============================
Connect PWM2(PA0) to LED

Nucleo_F103RB
=============
Connect PWM1(PA8) to LED
+15 −3
Original line number Diff line number Diff line
@@ -25,6 +25,17 @@
#include <device.h>
#include <pwm.h>

#if defined(CONFIG_SOC_STM32F401XE) || defined(CONFIG_SOC_STM32L476XX)
#define PWM_DRIVER "PWM_2"
#define PWM_CHANNEL 1
#elif CONFIG_SOC_STM32F103XB
#define PWM_DRIVER "PWM_1"
#define PWM_CHANNEL 1
#else
#define PWM_DRIVER "PWM_0"
#define PWM_CHANNEL 0
#endif

/*
 * 50 is flicker fusion threshold. Modulated light will be perceived
 * as steady by our eyes when blinking rate is at least 50.
@@ -42,14 +53,15 @@ void main(void)

	printk("PWM demo app-fade LED\n");

	pwm_dev = device_get_binding("PWM_0");
	pwm_dev = device_get_binding(PWM_DRIVER);
	if (!pwm_dev) {
		printk("Cannot find PWM_0!\n");
		printk("Cannot find %s!\n", PWM_DRIVER);
		return;
	}

	while (1) {
		if (pwm_pin_set_usec(pwm_dev, 0, PERIOD, pulse_width)) {
		if (pwm_pin_set_usec(pwm_dev, PWM_CHANNEL,
					PERIOD, pulse_width)) {
			printk("pwm pin set fails\n");
			return;
		}
Loading