μC/OS-II experiment: basic management of Experiment 1

Source: Internet
Author: User
The learning material for the μC/OS-II is poked here. General tutorial Code Description: Experiment Code Template (mdk4.70)Note: The app here is the code of the last experiment. It is okay to copy the code as described below. You can also start from the last one. Involved μC/OS-II system function :... Reference materials and supporting code: uCOS-II experiment guide ucos_demo Note: It is correct to refer to this document, but there are some problems with the concept or code of several experiments (almost every ⊙ B Khan, I have pointed it out later (maybe some of my points are also wrong). If you don't know it, you can make a comparison.

It is recommended that you assign values to the project, and debug and modify the codes. You can also view the serial port data output in the usart of the simulator.Experiment code: App. c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Void task0 (void * pdata)
{
Int8u err;
While (1)
{
Printf ("application tasks switched % d times! \ R \ n ", ++ count );
Printf ("task_0 is running ............................. \ r \ n ");
Printf ("task_1 is suincluded! \ R \ n ");
Printf ("************************************* * ********* \ r \ n ");
Err = ostasksuspend (OS _prio_self); // suspend itself
}
}

Void task1 (void * pdata)
{
Int8u err;
While (1)
{
Ostimedly (1000 );
Printf ("application tasks switched % d times! \ R \ n ", ++ count );
Printf ("task_0 is suincluded! \ R \ n ");
Printf ("task_1 is running .............................. \ r \ n ");
Printf ("************************************* * ********* \ r \ n ");
Ostimedly (1000 );
Err = ostaskresume (task0_task_prio);/* resume task0 */
}
}

App. h
1
Global int32u count;
App_cfg.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Define task0_stk_size 64
# Define task1_stk_size 64

# Define task0_task_prio 4
# Define taskdetailtask_prio 5

# Ifdef global_stask_define
# Define global
# Else
# Define global extern
# Endif

Global OS _stk task_task0_stk [task0_stk_size];
Global OS _stk task_task1_stk [task1_stk_size];

Void task0 (void * pdata );
Void task1 (void * pdata );

Main. c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Start the task
Static void taskstart (void * pdata)
{
Pdata = pdata;
// App Initialization
// The system clock must be called after osstart ()
Systick_configuration ();

# If (OS _task_stat_en> 0)
Osstatinit ();
# Endif

/* Basic management of Experiment 1 */
Ostaskcreate (task0, (void *) & taskdata [0], (OS _stk *) & task_task0_stk [TASK0_STK_SIZE-1], task0_task_prio );
Ostaskcreate (task1, (void *) & taskdata [1], (OS _stk *) & task_task1_stk [TASK1_STK_SIZE-1], task1_task_prio );

// Delete yourself after creating other tasks
Ostaskdel (OS _prio_self );
}

Experiment results: Note: The heartbeat ick_configuration must be called after osstart (preferably in the taskstart task of the startup task-good habits). Otherwise, the consequences are unknown, because you have opened the interrupt before the system is started, and the system does not know what to do.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.