void AT24Cxx_Test(void) { uint16_t i = 0; uint8_t buffer[AT24CXX_TEST_DATASIZE]; UART_printf("beigin AT24Cxx Test\r\n"); AT24Cxx_Init(); for(i=0; i<sizeof(buffer); i++) { buffer[i] = i; } AT24Cxx_Write(buffer, AT24CXX_TEST_ADDR, sizeof(buffer)); for(i=0; i<sizeof(buffer); i++) { buffer[i] = 0; } AT24Cxx_Read(buffer,AT24CXX_TEST_ADDR,sizeof(buffer)); for(i=0; i<sizeof(buffer); i++) { if(buffer[i] != i) { UART_printf("AT24Cxx Test:Err:buffer[%d] = %d\r\n",i,buffer[i]); } } UART_printf("AR24CXX Test complete\r\n"); }
int main(void) { //使用USB 必须CoreClock = 96M uint8_t usb_hid_send_buf[8] ={0,0,0,0,0,0}; uint8_t usb_hid_rec_buf[8]; uint8_t usb_hid_rec_cnt = 0; //接收帧计数 SystemClockSetup(ClockSource_EX50M,CoreClock_96M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); UART_printf("Waitting for USB connect ...\r\n"); USB_Init(); //初始化USB设备 USB_WaitDeviceEnumed(); //等待USB枚举成功 UART_printf("USB connected!\r\n"); while(1) { KBI_Scan(); usb_hid_send_buf[0] = KBI_GetKeyValue(kKEY1); usb_hid_send_buf[1] = KBI_GetKeyValue(kKEY2); USB_HID_SendData(usb_hid_send_buf,8); //发送数据 if(USB_HID_RecData(usb_hid_rec_buf) != 0) //接收到了数据 { LED_Ctrl(kLED1, (usb_hid_rec_buf[0]&0x01)>>0); LED_Ctrl(kLED2, (usb_hid_rec_buf[0]&0x02)>>1); usb_hid_rec_cnt++; UART_printf("USB HID Data Received\r\n"); } HID_Proc(); //执行HID进程 DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时 }
void mtk_send_command(char* command){ uint8_t checksum = 0; int i; /* Send what we have first, and then calculate checksums, etc while its sending */ UART_printf("%s", command); for(i=0; command[i] != '$'; i++) ; /* Get to the character after the $ */ i++; /* Calculate the checksum */ for(; (command[i] != '*') && (command[i] != '\0'); i++) checksum ^= command[i]; if(command[i] != '*') UART_putchar('*'); UART_putchar(checksum); UART_printf("\r\n"); }
int main(void) { //使用USB 必须CoreClock = 96M uint8_t FnKey = 0; uint8_t Keybuf[6] = {0,0,0,0,0,0}; SystemClockSetup(ClockSource_EX50M,CoreClock_96M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); UART_printf("Waitting for USB connect ...\r\n"); USB_Init(); //初始化USB设备 USB_WaitDeviceEnumed(); //等待USB枚举成功 UART_printf("USB connected!\r\n"); while(1) { KBI_Scan(); if(KBI_GetKeyState(kKEY1) == kKBI_SINGLE) { Keybuf[0] = 4; //A 的USBHIDKeyCode USB_HID_SetKeyBoard(FnKey,Keybuf); } if(KBI_GetKeyState(kKEY2) == kKBI_SINGLE) { Keybuf[0] = 5; //A 的USBHIDKeyCode USB_HID_SetKeyBoard(FnKey,Keybuf); } HID_Proc(); //执行HID进程 DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时 } }
//DRIVE ENABLE/DISABLE void drive_enable_handler(void) { uint32_t data; if (drive_state == DRIVE_DISABLED) { UART_printf("DRIVE ENABLED\n\r"); drive_state = DRIVE_ENABLED; precharge_state = PRECHARGED; torque_vectoring_state = TQ_VEC_CENTRE; data = MLINK_PRECHARGE_CHARGE; //sys_state = SYS_MANUAL; mlink_send(0x00, MLINK_PRECHARGE_ADDR, (void*) &data); //steveLEDs.led[2]->state = ON; //steveLEDs.led[2]->flash = OFF; //steveLEDs.led[5]->state = ON; //steveLEDs.led[5]->flash = OFF; left_ws_state = LEFT_WS_ENABLE; right_ws_state = RIGHT_WS_ENABLE; steveLEDs.K5V[2]->flash = OFF; steveLEDs.K5V[2]->state = OFF; steveLEDs.K5V[3]->flash = OFF; steveLEDs.K5V[3]->state = OFF; } else { UART_printf("DRIVE_DISABLED\n\r"); drive_state = DRIVE_DISABLED; precharge_state = DISCHARGED; data = MLINK_PRECHARGE_DISCHARGE; //sys_state = SYS_INIT; mlink_send(0x00, MLINK_PRECHARGE_ADDR, (void*) &data); //steveLEDs.led[2]->state = OFF; //steveLEDs.led[2]->flash = OFF; //steveLEDs.led[5]->state = OFF; //steveLEDs.led[5]->flash = OFF; } }
/* A simple print float implementation. Takes the decimal part, prints it * as an int. Subtracts decimal part, and multiplies by 10^digits_past_point * and prints that as the fraction part. * Warning: There is probably going to be rounding error in here. * NOTE: This function should only be used for debugging as it's VERY slow in use * it performs many double floating point ops per character printed. */ static unsigned UART_printfloat(char **out, double dbl, unsigned frac_len) { int len = 0; int frac = 0; int dec = (int)dbl; int i; int sign; int multiplier=1; if (dbl < 0.0) sign = -1; else sign = 1; len += UART_printf("%d", dec); for (i = 0; i < frac_len; i++){ if(i==0){ UART_printf("."); } frac=((int) (dbl*multiplier*sign))*10; //Stuff already printed to the left mi multiplier*=10; dec=((int) (dbl * multiplier*sign))-frac; UART_printf("%d", dec); } return len; }
//CRUISE ENABLE/DISABLE void cruise_handler(void) { if (sys_state == SYS_CRUISE) { sys_state = SYS_MANUAL; left_ws_state = LEFT_WS_ENABLE; right_ws_state = RIGHT_WS_ENABLE; torque_vectoring_state = TQ_VEC_CENTRE; UART_printf("MANUAL \n\r"); steveLEDs.K5V[2]->state = OFF; steveLEDs.K5V[2]->flash = OFF; steveLEDs.K5V[3]->state = OFF; steveLEDs.K5V[3]->flash = OFF; steveLEDs.K5V[6]->state = OFF; steveLEDs.K5V[6]->flash = OFF; steveLEDs.K5V[11]->state = OFF; steveLEDs.K5V[11]->flash = OFF; } else if ((sys_state == SYS_MANUAL) && (reverse_state == REVERSE_OFF)) { sys_state = SYS_CRUISE; left_ws_state = LEFT_WS_ENABLE; right_ws_state = RIGHT_WS_ENABLE; cruise_rpm = current_rpm; UART_printf("CRUISE \n\r"); steveLEDs.K5V[2]->state = OFF; steveLEDs.K5V[2]->flash = OFF; steveLEDs.K5V[3]->state = OFF; steveLEDs.K5V[3]->flash = OFF; steveLEDs.K5V[6]->colour = GREEN; steveLEDs.K5V[6]->flash = ON; steveLEDs.K5V[11]->colour = GREEN; steveLEDs.K5V[11]->flash = ON; } }
//HAZARDS - BUT9 void hazards_handler(void) { uint32_t data; if (hazards_state == HAZARDS_OFF) { left_ind_state = LEFT_IND_OFF; right_ind_state = RIGHT_IND_OFF; hazards_state = HAZARDS_ON; UART_printf("HAZARDS_ON\n\r"); data = MLINK_RIGHT_IND_ON; mlink_send(0x00, MLINK_RIGHT_IND_ADDR, (void*) &data); data = MLINK_LEFT_IND_ON; mlink_send(0x00, MLINK_LEFT_IND_ADDR, (void*) &data); steveLEDs.K5V[9]->colour = ORANGE; steveLEDs.K5V[9]->flash = ON; steveLEDs.K5V[2]->flash = OFF; steveLEDs.K5V[2]->state = OFF; steveLEDs.K5V[3]->flash = OFF; steveLEDs.K5V[3]->state = OFF; } else { hazards_state = HAZARDS_OFF; UART_printf("HAZARDS_OFF\n\r"); data = MLINK_RIGHT_IND_OFF; mlink_send(0x00, MLINK_RIGHT_IND_ADDR, (void*) &data); data = MLINK_LEFT_IND_OFF; mlink_send(0x00, MLINK_LEFT_IND_ADDR, (void*) &data); steveLEDs.K5V[9]->flash = OFF; steveLEDs.K5V[9]->state = OFF; } }
int main(void) { uint8_t last_sec; RTC_CalanderTypeDef RTC_Calander1; //初始化系统时钟 使用外部50M晶振 PLL倍频到100M SystemClockSetup(ClockSource_EX50M,CoreClock_100M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); UART_printf("RTC TEST\r\n"); RTC_Init(); //可以设置时间 RTC_Calander1.Hour = 10; RTC_Calander1.Minute = 57; RTC_Calander1.Second = 58; RTC_Calander1.Month = 10; RTC_Calander1.Date = 10; RTC_Calander1.Year = 2013; //RTC_SetCalander(&RTC_Calander1); NVIC_EnableIRQ(RTC_IRQn); while(1) { RTC_GetCalander(&RTC_Calander1); //读取时间 if(last_sec != RTC_Calander1.Second) { UART_printf("%d-%d-%d %d:%d:%d\r\n", RTC_Calander1.Year, RTC_Calander1.Month, RTC_Calander1.Date, RTC_Calander1.Hour, RTC_Calander1.Minute, RTC_Calander1.Second); last_sec = RTC_Calander1.Second; } } }
int main(void) { uint8_t i; uint32_t cnt = 0; CAN_InitTypeDef CAN_InitStruct1; //使用CAN时 CoreClock 必须是96M SystemClockSetup(ClockSource_EX50M,CoreClock_96M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); //配置CAN初始化信息 CAN_InitStruct1.CANxMap = CAN1_TX_PE24_RX_PE25; //PE24 PE25引脚 CAN_InitStruct1.CAN_BaudRateSelect = CAN_SPEED_125K; //125K 波特率 CAN_InitStruct1.FilterEnable = ENABLE; //不使用过滤ID功能 CAN_Init(&CAN_InitStruct1); //配置接收信息 CAN_RxMsg1.MBIndex = CAN_MB1; //接收邮箱使用CAN_MB1 CAN_RxMsg1.DLC = 8; //最多接收8个字节 一帧 CAN_RxMsg1.Id = 7; //接收ID CAN_EnableReceiveMB(CAN1, &CAN_RxMsg1); //使能接收邮箱 //配置发送数据 CAN_TxMsg1.Id = 10; //发送ID 10 CAN_TxMsg1.DLC = 8; //每帧8字节 CAN_TxMsg1.IDE = CAN_IDE_Standard; //标准数据帧 CAN_TxMsg1.RTR = CAN_RTR_Data; //数据帧 CAN_TxMsg1.MBIndex = CAN_MB2; //使用邮箱0 //写入测试数据 memcpy(CAN_TxMsg1.Data, "12345678", CAN_TxMsg1.DLC); while(1) { if (CAN_Receive(CAN1, &CAN_RxMsg1) == TRUE) { //如果接收成功 打印接收数据 UART_printf("ID:0x%x\r\n",CAN_RxMsg1.Id); UART_printf("Data: "); for(i = 0; i < CAN_RxMsg1.DLC; i++) { UART_printf("0x%x ", CAN_RxMsg1.Data[i]); } UART_printf("\r\n"); } cnt++; //发送 if(cnt == 1000000) { CAN_Transmit(CAN1, &CAN_TxMsg1); cnt = 0; } } }
int main(void) { uint32_t counter; NRF2401_InitTypeDef NRF2401_InitStruct1; SystemClockSetup(ClockSource_EX50M,CoreClock_100M); DelayInit(); LED_Init(LED_PinLookup_CHKATOM, kNumOfLED); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); //配置2401引脚 NRF2401_InitStruct1.CE_GPIO_Instance = PTA_BASE; //CE NRF2401_InitStruct1.CE_GPIO_Pin = GPIO_Pin_13; NRF2401_InitStruct1.CS_GPIO_Instance = PTA_BASE; //CS NRF2401_InitStruct1.CS_GPIO_Pin = GPIO_Pin_14; NRF2401_InitStruct1.IRQ_GPIO_Instance = PTA_BASE; //IRQ NRF2401_InitStruct1.IRQ_GPIO_Pin = GPIO_Pin_12; NRF2401_InitStruct1.DATA_SPI_CSMap = SPI0_PCS0_PA14; //SPI NRF2401_InitStruct1.DATA_SPI_DataMap = SPI0_SCK_PA15_SOUT_PA16_SIN_PA17; NRF2401_Init(&NRF2401_InitStruct1); if(NRF24L01_Check() != NRF_OK) { UART_printf("NRF2401 init failed\r\n"); return 1; } //先设置为接收模式 NRF2401_SetRXMode(); while(1) { if(counter > 20000) { NRF2401_SetTXMode(); //设置为发送模式 if(NRF2401_SendData("NRF2401 Test CHK60EVB!") == TX_OK) { UART_printf("Send Succ.\r\n"); } else { UART_printf("Send Failed\r\n"); } NRF2401_SetRXMode(); //设置为接收模式 counter = 0; } counter++; if(NRF2401_RecData(NRF2401RXBuffer) == NRF_OK) //接收到了数据 { UART_printf("DataRec:%s\r\n",NRF2401RXBuffer); //打印数据 } } }
// write to scratchpad of a SINGLE sensor void writeSP(int brdNo) { int i; int get[8]; ow_reset(); write_byte(0xCC); write_byte(0x4E); write_byte(brdNo); write_byte(0x0); write_byte(0x7F); while(read_bit() == 0); ow_reset(); write_byte(0xCC); write_byte(0x48); uDelay(120); ow_reset(); write_byte(0xCC); uDelay(120); write_byte(0xBE); for (i = 0 ; i < 9 ; i++){ get[i] = read_byte(); } if(get[2] != brdNo || get[3] != 0 || get[4] != 0x7F) { UART_printf("BAD CONFIGURATION?\n"); } }
// FIND DEVICES uint8_t FindDevices(void) { unsigned char m; // Begins when a presence is detected if(!ow_reset()) { // Begins when at least one part is found if(First()) { numROMs=0; do { numROMs++; for(m=0;m<8;m++) { // Identifies ROM number on found device FoundROM[numROMs][m]=ROM[m]; } #if OW_DEBUG UART_printf("\nSENSOR = %d ROM = %02X %02X %02X %02X %02X %02X %02X %02X\n", numROMs + 1, FoundROM[numROMs][0],FoundROM[numROMs][1], FoundROM[numROMs][2],FoundROM[numROMs][3], FoundROM[numROMs][4], FoundROM[numROMs][5],FoundROM[numROMs][6],FoundROM[numROMs][7]); #endif } while (Next()&&(numROMs<=NO_ROMS)); //Continues until no additional devices are found } } return numROMs; }
int main(void) { uint32_t LPTM_Value = 0; LPTM_InitTypeDef LPTM_InitStruct1; FTM_InitTypeDef FTM_InitStruct1; SystemClockSetup(ClockSource_EX50M,CoreClock_100M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); //在PC3上产生 1KHz 占空比50%的 方波 FTM_InitStruct1.Frequency = 1000; FTM_InitStruct1.FTMxMAP = FTM0_CH3_PC4; FTM_InitStruct1.FTM_Mode = FTM_Mode_EdgeAligned; FTM_InitStruct1.InitalDuty = 5000; FTM_Init(&FTM_InitStruct1); //开启PTC5上的脉冲计数引脚 LPTM_InitStruct1.LPTMxMap = LPTM_CH2_PC5; LPTM_InitStruct1.LPTM_InitCompareValue = 200; //在脉冲计数模式下无意义 LPTM_InitStruct1.LPTM_Mode = LPTM_Mode_PC_FALLING; //下降沿触发计数 LPTM_Init(&LPTM_InitStruct1); while(1) { //读取脉冲技术值 LPTM_Value = LPTM_GetTimerCounterValue(LPTMR0); //清空技术值 LPTM_ResetTimeCounter(LPTMR0); UART_printf("LPTMR:%dHz\r\n", LPTM_Value); DelayMs(1000); } }
void PIT_IRQHandler (void) { ITStatus status; status = PIT_GetITStatus(PIT0, PIT_IT_TIF); if(status == SET) { UART_printf("PIT0_Enter\r\n"); PIT_ClearITPendingBit(PIT0, PIT_IT_TIF); } status = PIT_GetITStatus(PIT1, PIT_IT_TIF); if(status == SET) { UART_printf("PIT1_Enter\r\n"); PIT_ClearITPendingBit(PIT1, PIT_IT_TIF); } }
//开始任务 void AppStartTask(void *pdata) { OS_CPU_SR cpu_sr=0; pdata = pdata; msg_test=OSMboxCreate((void*)0); //创建消息邮箱 sem_test=OSSemCreate(0); //创建信号量 OSStatInit(); //初始化统计任务.这里会延时1秒钟左右 OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) OSTaskCreate(AppLEDTask,(void *)0, &APP_LED_STK[TASK_STK_SIZE-1], APP_LED_TASK_PRIO); //建立LED1任务 OSTaskCreate(AppMBOXTask,(void *)0, &APP_MBOX_STK[TASK_STK_SIZE-1], APP_MBOX_TASK_PRIO); //建立邮箱接收显示任务 OSTaskCreate(AppSEMTask,(void *)0, &APP_SEM_STK[TASK_STK_SIZE-1], APP_SEM_TASK_PRIO); //建立信号量接收显示任务 OSTaskCreate(AppWDOGTask,(void *)0, &APP_WDOG_STK[TASK_STK_SIZE-1], APP_WDOG_TASK_PRIO); //建立看门狗任务 OSTaskCreate(AppPostTask,(void *)0, &APP_POST_STK[TASK_STK_SIZE-1], APP_POST_TASK_PRIO); //建立邮箱,信号量投递任务 UART_printf("uCOSII MBox&Sem DemoTest\r\n"); OSTaskSuspend(APP_START_TASK_PRIO); //挂起起始任务. OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断) }
//--------------------- // Get Line Input //--------------------- static void get_line (uint8_t *buff, uint8_t len) { uint8_t c, i; i = 0; for (;;) { //c = rcvr(); c = (BYTE) UARTReceive_Byte(); UART_printf("%c", c); if (c == '\r') break; if ((c == '\b') && i) i--; if ((c >= ' ') && (i < len - 1)) buff[i++] = c; } buff[i] = 0; UART_printf("\n\r"); }
void ADC0_IRQHandler(void) { ADC_ClearITPendingBit(ADC0,A,ADC_IT_AI); UART_printf("!!!\r\n"); }
int main(void) { SD_InitTypeDef SD_InitStruct1; SystemClockSetup(ClockSource_EX50M,CoreClock_100M); DelayInit(); LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED); UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200); DisplayCPUInfo(); UART_printf("Please Insert Card\r\n"); SD_InitStruct1.SD_BaudRate = 2000000; //等待SD卡初始化成功 while(SD_Init(&SD_InitStruct1) != ESDHC_OK); UART_printf("SD Size:%dMB\r\n", SD_InitStruct1.SD_Size); while(1) { } }
void ADC_Test(void) { uint8_t i = 0; uint16_t res = 0; ADC_InitTypeDef ADC_InitStruct1; UART_printf("Begin ADC test\r\n"); ADC_InitStruct1.ADCxMap = ADC0_SE3A_PE22; ADC_InitStruct1.ADC_Precision = ADC_PRECISION_12BIT; ADC_InitStruct1.ADC_TriggerSelect = ADC_TRIGGER_SW; ADC_Init(&ADC_InitStruct1); while(i<10) { res = ADC_GetConversionValue(ADC0_SE3A_PE22); UART_printf("ADRest:%d\r\n",res); DelayMs(200); i++; } UART_printf("ADC test complete\r\n"); }
void AppLED0Task(void *pdata) { pdata = pdata; //防止编译器出错 无实际意义 while(1) { UART_printf("AppLED 2 Task:Process\r\n"); LED_Toggle(kLED2); OSTimeDlyHMSM(0, 0, 0, 300); } }
//串口通信 void SendImage(void) { unsigned char i; char buf[5]; for (i = 0; i < COL; i++) { // if(IMAGE[i] == 1) // UART_SendData((UART0_Type *)UART0,' '); // else // UART_SendData((UART0_Type *)UART0,'*'); if(IMAGE[i] > THRESHOLD) sprintf(buf, " "); else sprintf(buf, "%02X ", IMAGE[i]); //sprintf(buf, "%02X ", IMAGE[i]); UART_printf(buf); //UART_SendData((UART0_Type *)UART0,'a' + (IMAGE[i] >> 4)); } UART_printf("\n"); }
/*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ int Protocol_function(void) { int s; if (UART_check_sym() == 1) { s = UART_wait_sym(1); switch (s) { case '1': Gen_default_func1(); UART_printf("Selected func1.\r\n"); return 1; case '2': Gen_default_func2(); UART_printf("Selected func2.\r\n"); return 1; } } return 0; }
void MAG3110_Test(void) { uint8_t ret; MAG3110_XYZDataTypeDef MAG3110_XYZDataStruct1; ret = MAG3110_Init(); if(ret == TRUE) { UART_printf("MAG3110 Succ\r\n"); } else { UART_printf("MAG3110 Err\r\n"); } ret = 0; while(ret < 30) if(MAG3110_GetXYZData(&MAG3110_XYZDataStruct1) == TRUE) { UART_printf("x:%d\r\n",abs(MAG3110_XYZDataStruct1.m_XData)); ret++; } }
//信号量测试,显示函数 void AppSEMTask(void *pdata) { uint8_t err; uint16_t TaskCtr=0; pdata=pdata; //防止编译器出错 无实际意义 while(1) { OSSemPend(sem_test,0,&err); //等待信号量 TaskCtr++; UART_printf("Received Sem:%d \r\n", TaskCtr); } }
//SPIFLASH 质量测试函数 static void SPIFLASH_Test(void) { uint32_t i; uint8_t test_buffer[SPIFLASH_TEST_SIZE]; SPI_FLASH_Read(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer)); UART_printf("Read data form 0x%x:\r\n", SPIFLASH_TEST_ADDR); for(i = 0; i < SPIFLASH_TEST_SIZE; i++) { UART_printf("[%x]:0x%x ", i, test_buffer[i]); } //写入测试数据 for(i = 0; i < SPIFLASH_TEST_SIZE; i++) { test_buffer[i] = i; } UART_printf("\r\n"); //写入数据 SPI_FLASH_Write(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer)); UART_printf("Write data completed\r\n"); memset(test_buffer, 0, sizeof(test_buffer)); SPI_FLASH_Read(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer)); UART_printf("Read data form 0x%x:\r\n", SPIFLASH_TEST_ADDR); //打印数据 for(i = 0; i < SPIFLASH_TEST_SIZE; i++) { UART_printf("[%x]:0x%x ", i, test_buffer[i]); } }
//REVERSE - BUT1 void reverse_handler(void) { uint32_t i; if (reverse_state == REVERSE_OFF && sys_state == SYS_MANUAL) { reverse_state = REVERSE_ON; UART_printf("REVERSE_ON\n\r"); /*for(i=0;i<8;i++) { steveLEDs.led[i]->flash = ON; }*/ steveLEDs.K5V[1]->colour = ORANGE; steveLEDs.K5V[1]->flash = ON; } else { reverse_state = REVERSE_OFF; UART_printf("REVERSE_OFF\n\r"); /* for(i=0;i<8;i++) { steveLEDs.led[i]->flash = OFF; steveLEDs.led[i]->state = OFF; }*/ steveLEDs.K5V[1]->flash = OFF; steveLEDs.K5V[1]->state = OFF; } }
//邮箱接收函数任务 void AppMBOXTask(void *pdata) { uint8_t key; uint8_t err; uint16_t TaskCtr=0; pdata=pdata; //防止编译器出错 无实际意义 while(1) { key=(uint32_t)OSMboxPend(msg_test,0,&err); //等待消息邮箱 TaskCtr++; UART_printf("Received MBox:%d \r\n", key); } }
void SPIFLASH_Test(void) { uint8_t ret; ret = SPIFLASH_Init(); if(ret == TRUE) { UART_printf("spiflash init succ.\r\n"); UART_printf("begin self test\r\n"); ret = SPI_FLASH_SelfTest(); if(ret == TRUE) { UART_printf("spiflash test succ\r\n"); } else { UART_printf("spiflash test err\r\n"); } } else { UART_printf("spiflash init err\r\n"); } }
//邮箱投递,信号量投递任务 void AppPostTask(void *pdata) { uint8_t key='A'; uint16_t TaskCtr=0; while(1) { key++; TaskCtr++; if(key > 'Z') key='A'; //改变邮箱投递的数据 OSMboxPost(msg_test,(void*)key); //发送消息 OSSemPost(sem_test); //发送信号量 UART_printf("App Post Message&Sem:%d times\r\n", TaskCtr); OSTimeDlyHMSM(0, 0, 0, 300); } }