📄 usertask.c
字号:
#include "c8051F340.h"
#include "includes.h"
OS_STK xdata mystack1[USER_STACK_SIZE],mystack2[USER_STACK_SIZE],mystack3[USER_STACK_SIZE];
void init_port(void);
void init_clk(void);
void mytask1(void) ;
void mytask2(void) ;
void mytask3(void) ;
void Init_Device(void);
extern void init_timer0(void);
void main(void)
{
//Init_Device();
init_clk();
PCA0MD = 0x00; /* disenable watchdog */
init_port();
init_uart0();
puts_uart0("Hello C8051F340!\n");
//while(1) putc_uart0(getc_uart0());
init_timer0();
OSInit();
OSTaskCreate(mytask1,0,&mystack1[0],0);
OSTaskCreate(mytask2,0,&mystack2[0],1);
OSTaskCreate(mytask3,0,&mystack3[0],2);
OSStart();
}
void init_port(void)
{
P0MDIN = 0xFF; /* non-analog input */
P0MDOUT = 0x10; /* TX0 push-pull output, RX0 open drain output */
P1MDIN = 0xFF;
P1MDOUT = 0x02;
P1 = 0x02; /* enablel max3223 tranceiver */
XBR0 = 0x01; /* enable uart0 */
XBR1 = 0x40; /* enable cross, enable draw-up resistor */
}
void init_clk(void)
{
unsigned char i;
OSCICN = 0x83; /* enable internal high frequency oscillator, set sysclk 12MHz */
while(!(OSCICN & 0x40)); /* wait internal high frequency oscillator ready */
OSCLCN = 0x00; /* shutdown internal low frequency oscillator */
OSCXCN = 0x00; /* shutdown external oscillator */
CLKMUL = 0x80; /* enable multiplier use internal oscillator */
for(i = 255; i > 0;i --); /* delay 5us minimum */
CLKMUL |= 0xC0; /* initial multiplier */
while(!(CLKMUL & 0x20)); /* wait multiplier ready */
CLKSEL = 0x00; /* usb clock use multiplier output, sysclk use internal oscillator */
}
void mytask1(void)
{
TR0 = 1;
while(1)
{
puts_uart0("Task 11111111 is running!\n");
OSTimeDly(OS_TICKS_PER_SEC);
}
}
void mytask2(void)
{
while(1)
{
puts_uart0("Task 22222222 is running!\n");
OSTimeDly(100);
}
}
void mytask3(void)
{
while(1)
{
puts_uart0("Task 33333333 is running!\n");
OSTimeDly(200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -