Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 00003 Ticker tick10ms; 00004 DigitalIn sw(dp26); 00005 PwmOut pwmled(dp24); 00006 DigitalOut myled(LED1); 00007 00008 Serial pc(dp16, dp15); 00009 00010 static uint8_t sw_state = 0; 00011 static bool sw_on = 0; 00012 00013 /* 10ms間隔で呼び出すハンドラ */ 00014 void tick10ms_proc(void) 00015 { 00016 /* 直近8回のスイッチON/OFF状態を保持 */ 00017 sw_state <<= 1; 00018 sw_state &= 0xfe; 00019 sw_state |= (sw & 0x01); 00020 00021 switch (sw_state) { 00022 case 0x00: /* 8回連続OFF */ 00023 sw_on = 0; 00024 break; 00025 case 0xff: /* 8回連続ON */ 00026 sw_on = 1; 00027 break; 00028 } 00029 } 00030 00031 int main() { 00032 uint8_t led_lv = 0; 00033 uint8_t prev_sw = 0; 00034 uint8_t sw_val = 0; 00035 00036 myled = 0; 00037 00038 pc.baud(9600); 00039 pc.printf("Start.\r\n"); 00040 00041 /* 10ms間隔のハンドラを登録 */ 00042 tick10ms.attach_us(tick10ms_proc, 10000); 00043 00044 /* PWMの周波数を10kHzに設定 */ 00045 pwmled.period(0.01); 00046 pwmled = 0.0; 00047 00048 while(1) { 00049 /* スイッチ状態を読み出し */ 00050 __disable_irq(); 00051 sw_val = sw_on; 00052 __enable_irq(); 00053 00054 /* スイッチON→OFFに変化 */ 00055 if ((prev_sw == 1) && (sw_val == 0)) { 00056 led_lv = (led_lv + 1) % (5 + 1); //LED出力を6段階に変化させる 00057 pwmled = (float)led_lv * 0.2; 00058 00059 pc.printf("PUSHED: led_lv=%d\r\n", led_lv); 00060 } 00061 prev_sw = sw_val; 00062 } 00063 }
Generated on Fri Jul 15 2022 02:10:13 by
1.7.2