Test mbed1.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include <math.h> 00003 #include "InterruptManager.h" 00004 #include "TPM_init.h" 00005 #include "SLCD.h" 00006 #define BAUD_RATE 9600 00007 00008 #define NVIC_ISER 0xE000E100 00009 #define NVIC_ISPR 0xE000E200 00010 00011 #define SIM_SOPT2_ADDRESS 0x40048004 00012 #define SIM_SCGC6_ADDRESS 0x4004803C 00013 00014 00015 DigitalOut out(PTD3); 00016 DigitalOut green(LED1); 00017 DigitalOut red(LED2); 00018 Serial pc(USBTX, USBRX); 00019 Timer timer; 00020 SLCD slcd; 00021 00022 unsigned int flag; 00023 unsigned int modulo_val = 48000; 00024 unsigned int prescale_val = 0; 00025 volatile unsigned val = 10; 00026 void TPM0_handler_test(); 00027 00028 void init_test() 00029 { 00030 NVIC_SetVector(TPM0_IRQn, (uint32_t) TPM0_handler_test); 00031 NVIC_SetPriority(TPM0_IRQn, 0); 00032 00033 TPM0_init(modulo_val, prescale_val); 00034 00035 NVIC_EnableIRQ(TPM0_IRQn); 00036 00037 wait(5); 00038 TPM0_start(); 00039 } 00040 00041 void TPM0_handler_test() { 00042 unsigned int overflow = TPM0_SC_read() & 0x000000C0; 00043 if(overflow == 0xC0) { 00044 TPM0_clear_overflow(); 00045 NVIC_ClearPendingIRQ(TPM0_IRQn); 00046 flag++; 00047 if (flag == val) { 00048 out = !out; 00049 red = !red; 00050 flag = 0; 00051 } 00052 // green = !green; 00053 } 00054 } 00055 00056 void read() 00057 { 00058 char c = (char) pc.getc(); 00059 green = !green; 00060 if (c == '1') { 00061 slcd.printf("%c",c); 00062 val = 1; 00063 } else if (c == '2') { 00064 slcd.printf("%c", c); 00065 val = 100; 00066 } else if (c == '3') { 00067 slcd.printf("%c",c); 00068 val = 1000; 00069 } else if (c == '4') { 00070 slcd.printf("%c",c); 00071 val = 10000; 00072 } else if (c == '5') { 00073 val = 100000; 00074 } else { 00075 slcd.printf("E"); 00076 return; 00077 } 00078 } 00079 00080 int main() { 00081 flag = 0; 00082 green = 0; 00083 red = 0; 00084 pc.baud(BAUD_RATE); 00085 pc.attach(read); 00086 slcd.printf("nesl"); 00087 init_test(); 00088 while(1) { 00089 if (flag == 1000) { 00090 // green = !green; 00091 flag = 0; 00092 } 00093 } 00094 /* 00095 while(1) { 00096 green = !green; 00097 out = !out; 00098 wait(0.5); 00099 out = !out; 00100 wait(0.5); 00101 } 00102 */ 00103 }
Generated on Fri Jul 22 2022 23:40:04 by 1.7.2