void LED_Toggle(uint8_t LEDNum) { switch(LEDNum) { case 0: GPIO_ToggleBit(LED1_PORT,LED1_PIN); break; case 1: GPIO_ToggleBit(LED2_PORT,LED2_PIN); break; default:break; } }
int main(void) { uint32_t i; DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("SD test\r\n"); printf("please insert SD card...\r\n"); //SD卡模块快速初始化,设置速度为20000000 SD_QuickInit(20000000); //获取SD卡的容量 printf("SD size:%dMB\r\n", SD_GetSizeInMB()); /* 读取0扇区数据,每一个扇区512字节 */ SD_ReadSingleBlock(0, sd_buffer); /* 打印0扇区数据 */ printf("sectoer 0 data:\r\n"); for(i = 0; i < 512; i++) { printf("0x%02X ", sd_buffer[i]); } while(1) { //小灯闪烁 GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* LED */ printf("calc the PWM duty, pwm will be generated on PA08 and input pin: PC01 and PC02\r\n"); FTM_PWM_QuickInit(FTM1_CH0_PA08, kPWM_EdgeAligned, 200); FTM_PWM_ChangeDuty(HW_FTM1, HW_FTM_CH0, 2500);/* 25% */ /* 配置IC 功能 设置中断 */ FTM_IC_QuickInit(FTM0_CH0_PC01, kFTM_ClockDiv128); FTM_IC_SetTriggerMode(HW_FTM0, HW_FTM_CH0, kFTM_IC_RisingEdge); FTM_CallbackInstall(HW_FTM0, FTM0_ISR); FTM_ITDMAConfig(HW_FTM0, kFTM_IT_CH0, true); FTM_IC_QuickInit(FTM0_CH1_PC02, kFTM_ClockDiv128); FTM_IC_SetTriggerMode(HW_FTM0, HW_FTM_CH1, kFTM_IC_FallingEdge); /* FTM_CallbackInstall(HW_FTM1, FTM1_ISR); */ FTM_ITDMAConfig(HW_FTM0, kFTM_IT_CH1, true); while(1) { /* printf("Frequency:%6dHz", InputCaptureValue); printf(" Frequency1:%6dHz\r\n", InputCaptureValue1); */ printf("Duty = %3f%% \n",((double)InputCaptureValue)/((double)InputCaptureValue1)*100.0); GPIO_ToggleBit(HW_GPIOE, 6); //控制小灯闪烁 DelayMs(500); } }
int main(void) { uint32_t instance; /*存放 UART 的模块号 */ DelayInit(); DelayMs(10); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* 初始化UART 使用快速初始化方式 波特率 115200 其他配置默认 返回初始化后 UART的模块号 */ instance = UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); /* 当使用串口初始化后 printf 被默认连接到第一个被初始化的串口上*/ printf("UART%d OK! Hello Kinetis\r\n", instance); while(1) { /* 串口 按字节发送 数据 注意 HW_UART0必须是已经初始化过的模块 否则 将产生错误*/ UART_WriteByte(instance, 'h'); UART_WriteByte(instance, 'e'); UART_WriteByte(instance, 'l'); UART_WriteByte(instance, 'l'); UART_WriteByte(instance, 'o'); UART_WriteByte(instance, '\r'); UART_WriteByte(instance, '\n'); /* 闪烁小灯 */ GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
/* 实验名称:Flexbus驱动ARAM 实验平台:渡鸦开发板 板载芯片:MK60DN512ZVQ10 实验效果:测试外挂的SRAM工作情况 具体的SRAM应用请参见sram.c文件 */ int main(void) { DelayInit(); DelayMs(10); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("Flexbus SRAM test\r\n"); /* 初始化外部SRAM */ SRAM_Init(); /* SRAM 自测 */ if(!SRAM_SelfTest()) { printf("sram test ok!\r\n"); } else { printf("sram test failed!\r\n"); } while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
/* 实验名称:WDOG窗口看门狗 实验平台:渡鸦开发板 板载芯片:MK60DN512ZVQ10 实验效果:开启看门狗的窗口模式,必须在规定的时间范围内喂狗,否则芯片复位 */ int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* LED */ UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); /* 初始化看门狗 */ WDOG_InitTypeDef WDOG_InitStruct1 = {0}; WDOG_InitStruct1.mode = kWDOG_Mode_Window; //设置看门狗为窗口模式 WDOG_InitStruct1.windowInMs = 1000; /* 开窗时间 设置为窗体模式后 喂狗必须在 看门狗开始计时后 1000 - 2000 MS内完成 多了少了都复位 比普通看门狗严格*/ WDOG_InitStruct1.timeOutInMs = 2000; /* 时限 2000MS : 2000MS 内没有喂狗则复位 */ WDOG_Init(&WDOG_InitStruct1); printf("\r\nSYSTEM RESET!!!!!!!%d\r\n", WDOG_GetResetCounter()); printf("press any character to feed dog feed, must be in windows time\r\n"); static uint32_t i; uint16_t ch; while(1) { if(UART_ReadByte(HW_UART0, &ch) == 0) { printf("wdog feed succ!\r\n"); WDOG_Refresh(); //喂狗 i = 0; } printf("cnt:i:%d\r", i++); DelayMs(100); GPIO_ToggleBit(HW_GPIOE, 6); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); /* 设置PORTE PORTA 中断 */ GPIO_QuickInit(HW_GPIOE,26, kGPIO_Mode_IPU); GPIO_QuickInit(HW_GPIOA, 4, kGPIO_Mode_IPU); GPIO_CallbackInstall(HW_GPIOE, PORTE_ISR); GPIO_CallbackInstall(HW_GPIOA, PORTA_ISR); GPIO_ITDMAConfig(HW_GPIOE, 26, kGPIO_IT_RisingEdge, true); GPIO_ITDMAConfig(HW_GPIOA, 4, kGPIO_IT_RisingEdge, true); printf("NVIC test connect E26&A04\r\n"); /* 将系统 中断优先级分组 可以配置 16个 抢占优先级 和16个 子优先级 */ NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2); //中断优先级分成2组 NVIC_SetPriority(PORTE_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 2, 2)); //设置PTE端口的抢占优先级的子优先级 NVIC_SetPriority(PORTA_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 2, 2)); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("FATFS test\r\n"); printf("please insert SD card...\r\n"); if(SD_QuickInit(20*1000*1000)) { printf("SD card init failed!\r\n"); while(1); } printf("SD size:%dMB\r\n", SD_GetSizeInMB()); FRESULT rc; FATFS fs_sd; FIL fil; FATFS *fs; fs = &fs_sd; UINT bw,br; /* bw = byte writted br = byte readed */ DWORD fre_clust, fre_sect, tot_sect; /* 挂载文件系统 */ rc = f_mount(fs, "0:", 0); ERROR_TRACE(rc); rc = f_getfree("0:", &fre_clust, &fs); ERROR_TRACE(rc); /* 计算磁盘空间及剩余空间 */ tot_sect = (fs->n_fatent - 2) * fs->csize; fre_sect = fre_clust * fs->csize; printf("%d KB total drive space.\r\n%d KB available.\r\n", tot_sect / 2, fre_sect / 2); /* 写入文件 */ printf("open or create file\r\n"); rc = f_open(&fil, "0:/fatfs.txt", FA_WRITE | FA_CREATE_ALWAYS); ERROR_TRACE(rc); printf("write file\r\n"); rc = f_write(&fil, "HelloWorld\r\n", 12, &bw); ERROR_TRACE(rc); printf("%d bytes writen\r\n", bw); rc = f_close(&fil); /* 读取文件 */ rc = f_open(&fil, "0:/fatfs.txt", FA_READ); ERROR_TRACE(rc); printf("file size:%l\r\n", f_size(&fil)); printf("file contents:\r\n"); while(1) { rc = f_read(&fil, buf, sizeof(buf), &br); if(rc || !br ) break; printf("%s", buf); } rc = f_close(&fil); ERROR_TRACE(rc); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
void GPIO_Test(void) { uint32_t i = 0; GPIO_InitTypeDef GPIO_InitStruct1; GPIO_InitStruct1.GPIO_Pin = 6; GPIO_InitStruct1.GPIO_InitState = Bit_RESET; GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE; GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP; GPIO_InitStruct1.GPIOx = PTA; GPIO_Init(&GPIO_InitStruct1); GPIO_InitStruct1.GPIO_Pin = 5; GPIO_Init(&GPIO_InitStruct1); for(i=0; i<10; i++) { GPIO_ToggleBit(PTA,6); GPIO_ToggleBit(PTA,5); DelayMs(100); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOD, 7, kGPIO_Mode_OPP); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PA01_TX_PA02, 115200); printf("HelloWorld\r\n"); /* ´ò¿ª´®¿ÚÖÐ¶Ï */ UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); UART_CallbackRxInstall(HW_UART0, UART_ISR); while(1) { GPIO_ToggleBit(HW_GPIOD, 7); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(50); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOD, 7, kGPIO_Mode_OPP); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PA01_TX_PA02, 115200); printf("PIT test\r\n"); /* ¿ªÆôPIT ¶¨Ê±1S */ PIT_QuickInit(HW_PIT_CH0, 1000*1000); PIT_CallbackInstall(HW_PIT_CH0, PIT_ISR); PIT_ITDMAConfig(HW_PIT_CH0, kPIT_IT_TOF); while(1) { GPIO_ToggleBit(HW_GPIOD, 7); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(50); } }
int main(void) { /* 开机延时 */ DelayInit(); /* LED */ GPIO_QuickInit(LED0_PORT, LED0_PIN, kGPIO_Mode_OPP); GPIO_QuickInit(LED1_PORT, LED1_PIN, kGPIO_Mode_OPP); GPIO_QuickInit(LED2_PORT, LED2_PIN, kGPIO_Mode_OPP); GPIO_QuickInit(LED3_PORT, LED3_PIN, kGPIO_Mode_OPP); /* UART 初始化 */ UART_QuickInit(UART0_RX_B2_TX_B1, 9600); printf("1-LED demo hello world!\r\n"); while(1) { GPIO_ToggleBit(LED0_PORT, LED0_PIN); GPIO_ToggleBit(LED1_PORT, LED1_PIN); GPIO_ToggleBit(LED2_PORT, LED2_PIN); GPIO_ToggleBit(LED3_PORT, LED3_PIN); DelayMs(500); } }
int main(void) { uint32_t clock; DelayInit(); GPIO_QuickInit(HW_GPIOD, 7, kGPIO_Mode_OPP); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PA01_TX_PA02, 115200); printf("HelloWorld\r\n"); CLOCK_GetClockFrequency(kCoreClock, &clock); printf("core clock:%dHz\r\n", clock); CLOCK_GetClockFrequency(kBusClock, &clock); printf("bus clock:%dHz\r\n", clock); while(1) { GPIO_ToggleBit(HW_GPIOD, 7); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(50); } }
int main(void) { uint8_t i; DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("flexbus lcd test\r\n"); ili9320_init(); printf("controller id:0x%X\r\n", ili9320_get_id()); while(1) { i++; i%= ARRAY_SIZE(ColorTable); ili9320_clear(ColorTable[i]); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); DelayMs(10); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PB16_TX_PB17 , 115200); printf("ATCMD test\r\n"); UART_CallbackRxInstall(HW_UART0, UART_RX_ISR); UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); ATP_Init(ATCMD, ARRAY_SIZE(ATCMD)); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07 , 115200); printf("type any character which will echo...\r\n"); /* 配置UART 中断配置 打开接收中断 安装中断回调函数 */ UART_CallbackRxInstall(HW_UART0, UART_RX_ISR); /* 打开串口接收中断功能 IT 就是中断的意思*/ UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { uint32_t clock; DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); /* 打印芯片信息 */ printf("%s - %dP\r\n", CPUIDY_GetFamID(), CPUIDY_GetPinCount()); /* 打印时钟频率 */ clock = GetClock(kCoreClock); printf("core clock:%dHz\r\n", clock); clock = GetClock(kBusClock); printf("bus clock:%dHz\r\n", clock); while(1) { /* 闪烁小灯 */ GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("OV7620 test\r\n"); ili9320_init(); SRAM_Init(); /* 摄像头速度非常快 把FLexbus 总线速度调到最高 */ SIM->CLKDIV1 &= ~SIM_CLKDIV1_OUTDIV3_MASK; SIM->CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(0); OV7620_Init(); SCCB_Init(); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { //定义GPIO初始化结构 GPIO_InitTypeDef GPIO_InitStruct1; //初始化系统时钟 使用内部RC振荡器 FLL倍频到96M SystemClockSetup(ClockSource_IRC,CoreClock_96M); DelayInit(); GPIO_InitStruct1.GPIOx = PTC; //PTC(PORTC) 端口 GPIO_InitStruct1.GPIO_InitState = Bit_SET; //如果设置为输出 则输出高电平 如果设置为输入 此项无效 GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE; //禁止此引脚的中断请求 GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_16; //C16引脚 GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP; //设置为推挽输出模式 //执行GPIO初始化 点亮LED GPIO_Init(&GPIO_InitStruct1); while(1) { GPIO_ToggleBit(PTC, GPIO_Pin_16); DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PB16_TX_PB17, 115200); /* 声明一个时间结构 */ RTC_DateTime_Type td = {0}; td.day = 20; td.hour = 23; td.minute = 59; td.second = 50; td.year = 2014; td.month = 11; printf("RTC alarm test\r\n"); RTC_QuickInit(); if(RTC_IsTimeValid() == false) { printf("bad time, reset!\r\n"); RTC_SetTime(&td); } /* 开启中断 */ RTC_CallbackInstall(RTC_ISR); RTC_ITDMAConfig(kRTC_IT_TimeAlarm, true); /* 设置闹钟在当前3秒后 */ RTC_GetTime(&td); td.second += 3; RTC_SetAlarm(&td); while(1) { /* 获得时间 */ RTC_GetTime(&td);//获得时间 printf("%d-%d-%d %d:%d:%d\r\n", td.year, td.month, td.day, td.hour, td.minute, td.second); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(1000); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); SRAM_Init(); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); GUI_Init(); GUI_DispString("BMP file test\r\n"); GUI_DispString("please insert SD card...\r\n"); SD_QuickInit(10*1000*1000); printf("SD size:%dMB\r\n", SD_GetSizeInMB()); FATFS fs_sd; FATFS *fs = &fs_sd; /* 挂载文件系统 */ f_mount(fs, "0:", 0); while(1) { scan_files("0:"); GPIO_ToggleBit(HW_GPIOE, 6); } }
int main(void) { //定义GPIO初始化结构 GPIO_InitTypeDef GPIO_InitStruct1; //初始化系统时钟 使用外部50M晶振 PLL倍频到100M SystemClockSetup(ClockSource_IRC,CoreClock_96M); DelayInit(); //初始化默认的调试端口 GPIO_InitStruct1.GPIOx = PTD; //D 端口 GPIO_InitStruct1.GPIO_InitState = Bit_RESET; //如果设置为输出 则初始化输出低电平(RESET) 设置为输入 此项无效 GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE; //此引脚不用做外部中断 GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_7; //D7引脚 GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP; //设置为推挽输出模式 //执行GPIO初始化 点亮LED GPIO_Init(&GPIO_InitStruct1); while(1) { GPIO_ToggleBit(PTD, GPIO_Pin_7); DelayMs(500); } }
int main(void) { /* 初始化Delay */ DelayInit(); /* 使用简易初始化初始化一个GPIO 设置为推挽输出模式 */ GPIO_QuickInit(HW_GPIOA, 6, kGPIO_Mode_OPP); /* 另外一种初始化方式: 结构体模式的初始化 */ // GPIO_InitTypeDef GPIO_InitStruct1; // GPIO_InitStruct1.instance = HW_GPIOA; // GPIO_InitStruct1.mode = kGPIO_Mode_OPP; // GPIO_InitStruct1.pinx = 6; // GPIO_Init(&GPIO_InitStruct1); /* 输出低电平 */ GPIO_WriteBit(HW_GPIOA, 6, 0); while(1) { /* 翻转引脚电平 原来是低变成高 原来是高变成低 */ GPIO_ToggleBit(HW_GPIOA, 6); DelayMs(300); //延时 10ms } }
int main(void) { DelayInit(); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* LED */ printf("ftm intput capture test, pwm will be generated on PA06 and input pin: PA08\r\n"); FTM_PWM_QuickInit(FTM0_CH3_PA06, kPWM_EdgeAligned, 200); /* 配置IC 功能 设置中断 */ FTM_IC_QuickInit(FTM1_CH0_PA08, kFTM_ClockDiv128); FTM_IC_SetTriggerMode(HW_FTM1, HW_FTM_CH0, kFTM_IC_FallingEdge); FTM_CallbackInstall(HW_FTM1, FTM1_ISR); FTM_ITDMAConfig(HW_FTM1, kFTM_IT_CH0, true); while(1) { printf("Frequency:%6dHz\r", InputCaptureValue); GPIO_ToggleBit(HW_GPIOE, 6); //控制小灯闪烁 DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* LED */ UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("kPWM_Complementary test, pwm will be generated on PC01 and PC02\r\n"); /* 初始化互补PWM 必须调用2次FTM_PWM_Init 硬件会自动连接相邻的2个通道*/ FTM_PWM_QuickInit(FTM0_CH0_PC01, kPWM_Complementary, 3000); FTM_PWM_QuickInit(FTM0_CH1_PC02, kPWM_Complementary, 3000); /* 设置FTM 的占空比 */ FTM_PWM_ChangeDuty(HW_FTM0, HW_FTM_CH0, 8000); // 50%占空比 0-10000 对应 0-100% 设置任意一个通道则会一起改变 while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { //定义GPIO初始化结构 GPIO_InitTypeDef GPIO_InitStruct1; SetVectorTable(0x05000UL); //为了配合Bootlaoder程序,更改中断向量表起始地址 //初始化系统时钟 使用内部RC振荡器 FLL倍频到96M SystemClockSetup(ClockSource_EX50M,CoreClock_96M); //初始化延时 DelayInit(); GPIO_InitStruct1.GPIOx = PTD; //PTD(PORTD) 端口 GPIO_InitStruct1.GPIO_InitState = Bit_RESET; //如果设置为输出 输出为低电平 设置为输入时此项无效 GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE; //禁止此引脚的中断请求 GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_7; //D7引脚 GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP; //设置为推挽输出模式 //执行GPIO初始化 点亮LED GPIO_Init(&GPIO_InitStruct1); while(1) { GPIO_ToggleBit(PTD, GPIO_Pin_7);//翻转电平 DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("CAN test\r\n"); CAN_QuickInit(CAN1_TX_PE24_RX_PE25, 125*1000); /* FIFO deep is 0+6 = 6 Once FIFO is enabled, MB0-5 cannot used as normal MB, MB0-5 used as RxFIFO and they automaically configed as Rx MB */ CAN_SetRxFIFO(HW_CAN1); CAN_CallbackInstall(HW_CAN1, CAN_ISR); CAN_ITDMAConfig(HW_CAN1, CAN_RX_FIFO_MB, kCAN_IT_RX); while(1) { CAN_WriteData(HW_CAN1, CAN_TX_MB, CAN_TX_ID, (uint8_t *)"CAN TEST", 8); /* 使用邮箱2 发送ID:0x10 发送 "CAN TEST" */ DelayMs(500); GPIO_ToggleBit(HW_GPIOE, 6); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("ADC test\r\n"); /* 初始化ADC模块 ADC0_SE19_DM0 */ ADC_InitTypeDef ADC_InitStruct1; //申请一个结构体 ADC_InitStruct1.instance = HW_ADC0; //使用ADC0模块 ADC_InitStruct1.clockDiv = kADC_ClockDiv8; /* ADC采样时钟2分频 */ ADC_InitStruct1.resolutionMode = kADC_SingleDiff10or11; //设置10位或11位精度 ADC_InitStruct1.triggerMode = kADC_TriggerSoftware; /* 软件触发转换 */ ADC_InitStruct1.singleOrDiffMode = kADC_Single; /*单端模式 */ ADC_InitStruct1.continueMode = kADC_ContinueConversionEnable; /* 启动连续转换 转换一次后 自动开始下一次转换*/ ADC_InitStruct1.hardwareAveMode = kADC_HardwareAverage_32; /*禁止 硬件平均 功能 */ ADC_InitStruct1.vref = kADC_VoltageVREF; /* 使用外部VERFH VREFL 作为模拟电压参考 */ ADC_Init(&ADC_InitStruct1); /* 开启转换完成中断配置 */ ADC_CallbackInstall(HW_ADC0, ADC_ISR); ADC_ITDMAConfig(HW_ADC0, kADC_MuxA, kADC_IT_EOF); /* 初始化对应引脚 */ /* DM0引脚为专门的模拟引脚 ADC时 无需设置复用 DM0也无法当做普通的数字引脚 */ /* 启动ADC转换 */ ADC_StartConversion(HW_ADC0, 19, kADC_MuxA); while(1) { printf("ADC:%4d\r", ADC_Value); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(50); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); /* 声明一个时间结构 */ RTC_DateTime_Type td = {0}; td.day = 20; td.hour = 23; td.minute = 59; td.second = 50; td.year = 2014; td.month = 11; printf("RTC clk out test, second pulse in on PE26\r\n"); RTC_QuickInit(); if(RTC_IsTimeValid() == false) { RTC_SetTime(&td); } /* 开启中断 */ RTC_CallbackInstall(RTC_ISR); RTC_ITDMAConfig(kRTC_IT_TimeAlarm, true); /* RTC_CLKOUT 输出 */ SIM->SOPT2 &= ~SIM_SOPT2_RTCCLKOUTSEL_MASK; PORT_PinMuxConfig(HW_GPIOE, 26, kPinAlt6); while(1) { RTC_GetTime(&td); printf("%d-%d-%d %d:%d:%d\r\n", td.year, td.month, td.day, td.hour, td.minute, td.second); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(1000); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("Hardfault Interrupt test!\r\n"); /* close PORTA gate clock */ SIM->SCGC5 &= ~SIM_SCGC5_PORTA_MASK; printf("operate PORTA without open it's clock gate, that will trigger hardfault!\r\n"); /* R/W PORTA, this will trigger hardfault */ PORTA->PCR[0] = 0; while(1) { /* иак╦п║╣ф */ GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }