Created
February 7, 2017 06:32
-
-
Save Tamakichi/0be432bf4fc37b1649125778048f03d5 to your computer and use it in GitHub Desktop.
Arduino STM32 PWM制御中のGPIO出力の実験
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Arduino STM32 PWM制御中のGPIO出力の実験 | |
* 2017/02/07 by たま吉さん | |
* | |
* GPIOピンをPWMに設定した場合、digitalWite()による出力を行っても出力は変化しない | |
* GPIOピンをOUTPUTに設定した場合、TimerによるPWM出力は変化しなし。 | |
* PWMとGPIO出力を併用する場合は、pinModeを随時切り替えばよい。 | |
* | |
* ・HardwareTimer | |
* http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/lang/api/hardwaretimer.html | |
* ・APIs timer.h | |
* http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/libmaple/api/timer.html | |
* | |
*/ | |
#include <libmaple/timer.h> | |
#define LED_PIN PB9 // TIMER4 4CH用出力ピン | |
// LED点灯 | |
void ledOn() { | |
pinMode(LED_PIN, OUTPUT); | |
digitalWrite(LED_PIN, HIGH); | |
delay(500); | |
pinMode(LED_PIN, PWM); | |
} | |
void ledOff() { | |
pinMode(LED_PIN, OUTPUT); | |
digitalWrite(LED_PIN, LOW); | |
delay(500); | |
pinMode(LED_PIN, PWM); | |
} | |
void setup() { | |
Serial.begin(115200); | |
//while (!Serial.isConnected()) delay(100); | |
pinMode(LED_PIN, PWM); | |
ledOff(); | |
// 初期化 4秒でリロード | |
timer_pause(TIMER4); | |
timer_init(TIMER4); | |
timer_set_prescaler(TIMER4, 10000); | |
timer_set_reload(TIMER4, 7200*4); | |
// 4秒周期でLEDを0.25秒間隔で点灯させる | |
timer_set_mode(TIMER4,4, TIMER_PWM); | |
timer_oc_set_mode(TIMER4,4,TIMER_OC_MODE_PWM_1,TIMER_OC_PE|TIMER_OC_CE|TIMER_OC_FE); | |
timer_set_compare(TIMER4,4,7200/4); | |
timer_cc_enable(TIMER4,4); | |
//timer_cc_set_pol(TIMER4,4,0); | |
// 割り込み実行 | |
timer_generate_update(TIMER4); | |
timer_resume(TIMER4); | |
} | |
void loop() { | |
if (Serial.available()) { | |
uint8_t c = Serial.read(); | |
if (c == '1') { | |
ledOn(); | |
} | |
if (c == '0') { | |
ledOff(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment