#include "gpio.h" #include "common.h" #include "uart.h" #include "cmsis_os.h" /* CH Kinetis固件库 V2.50 版本 */ /* 修改主频 请使用 CMSIS标准文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */ /* UART 快速初始化结构所支持的引脚* 使用时还是推荐标准初始化 */ /* UART1_RX_PE01_TX_PE00 UART0_RX_PF17_TX_PF18 UART3_RX_PE05_TX_PE04 UART5_RX_PF19_TX_PF20 UART5_RX_PE09_TX_PE08 UART2_RX_PE17_TX_PE16 UART4_RX_PE25_TX_PE24 UART0_RX_PA01_TX_PA02 UART0_RX_PA15_TX_PA14 UART3_RX_PB10_TX_PB11 UART0_RX_PB16_TX_PB17 UART1_RX_PC03_TX_PC04 UART4_RX_PC14_TX_PC15 UART3_RX_PC16_TX_PC17 UART2_RX_PD02_TX_PD03 UART0_RX_PD06_TX_PD07 UART2_RX_PF13_TX_PF14 UART5_RX_PD08_TX_PD09 */ #define APPLICATION_TASK_STK_SIZE 1024 extern void application_entry(void *arg); osThreadDef(application_entry, osPriorityNormal, 1, APPLICATION_TASK_STK_SIZE); #define TASK1_STK_SIZE 512 void task1(void *arg); osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE); #define TASK2_STK_SIZE 512 void task2(void *arg); osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE); void SysTick_Handler(void) { if(tos_knl_is_running()) //OS开始跑了,才执行正常的调度处理 { tos_knl_irq_enter(); //进入中断 tos_tick_handler(); //调用TencentOS tiny的时钟服务程序 tos_knl_irq_leave(); //触发任务切换软中断 } } void task1(void *arg) { int count = 1; while (1) { printf("###This is task1, %d\r\n", count++); osDelay(2000); } } void task2(void *arg) { int count = 1; while (1) { printf("***This is task2, %d\r\n", count++); osDelay(1000); } } void application_entry(void *arg) { osThreadCreate(osThread(task1), NULL); // Create task1 osThreadCreate(osThread(task2), NULL); // Create task2 } int main(void) { DelayInit(); /* 初始化一个引脚 设置为推挽输出 */ GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); /* 初始化一个串口 使用UART0端口的PTD6引脚和PTD7引脚作为接收和发送,默认设置 baud 115200 */ UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("Welcome to TencentOS tiny\r\n"); osKernelInitialize(); osThreadCreate(osThread(application_entry), NULL); osKernelStart(); }