当前位置:网站首页>Introduction to RT thread kernel (4) -- clock management
Introduction to RT thread kernel (4) -- clock management
2022-07-05 04:20:00 【Number and form】
Timer management
Hardware timer : The external crystal oscillator provides the chip input clock
Software timer : Provided by the operating system , The unit is the time length of the clock beat , The timing value must be an integral multiple of the clock beat . The clock beat of the system is 10ms, The time setting of the soft timer must be 20ms,30ms etc. .
Two timer mechanisms :
Single trigger timer : Execute timer event only once , Then the timer stops automatically
Cycle triggered timer : Periodically trigger timer events , The straightway user stops manually
HAED_TIMER Pattern ( The default mode )
The timer timeout function in this mode executes in the interrupt context , Can be initialized in / Use parameters when creating timers RT_TIMER_FLAG_HARD_TIMER To specify the .
SOFT_TIMER Pattern
Define by macro RT_USING_TIMER_SOFT To decide whether to enable the mode . When this mode is enabled , The system will create a timer Threads , then SOFT_TIMER The timer timeout function of mode will be in timer Execute in the context of thread . Can be initialized in / Use parameters when creating timers RT_TIMER_FLAG_SOFT_TIMER To specify the settings SOFT_TIMER Pattern .
Timer control block :
struct rt_timer
typedef struct rt_timer *rt_timer_t
Timer management mode :
Initialize the timer :
void rt_system_timer_init(void);
SOFT_TIMER initialization :
void rt_system_timer_thread_init(void);
Timer creation :
rt_timer_t rt_timer_create()
Timer deletion ( Free memory )
rt_err_t rt_timer_delete(rt_timer_t timer);
Timer initialization :
rt_timer_init()
Timer disengagement :( Don't free memory )
rt_err_t rt_timer_detach(rt_timer_t timer);
Start timer :
rt_err_t rt_timer_start(rt_timer_t timer);
Stop timer :
rt_err_t rt_timer_stop(rt_timer_t timer);
Control timer function interface :
You can view and modify the timer settings according to the parameters of the command type
rt_err_t rt_timer_control(rt_timer_t timer, rt_uint8_t cmd, void* arg);
Parameters :timer, Timer handle
cmd Commands for controlling timers , Currently, four commands are supported , Set the timing time , Check the timing , Set single trigger , Set cycle trigger
arg And cmd Corresponding control command parameters such as ,cmd When setting timeout for , You can pass the timeout parameter through arg To set
cmd command :
#define RT_TIMER_CTRL_SET_TIME 0x0 /* Set timer timeout /
#define RT_TIMER_CTRL_GET_TIME 0x1 / Get timer timeout /
#define RT_TIMER_CTRL_SET_ONESHOT 0x2 / Set the timer to a single timer /
#define RT_TIMER_CTRL_SET_PERIODIC 0x3 / Set the timer to periodic timer */
High precision delay
Use timer delay because each time the delay time is an integral multiple of the clock beat , If you need more accurate delay , You need to read the count of the hardware timer or directly use the hardware timer
stay Cortex-M In the series ,SysTick Has been RT-Thread Used as a OS Tick Use , It is configured to 1/RT_TICK_PER_SECOND The way to trigger an interrupt after seconds , The interrupt handler function uses Cortex-M3 default SysTick_Handler name . stay Cortex-M3 Of CMSIS(Cortex Microcontroller Software Interface Standard) It is stipulated in the specification that SystemCoreClock Represents the dominant frequency of the chip , So based on the SysTick as well as SystemCoreClock, We can use SysTick Obtain an accurate delay function , As shown in the following example ,Cortex-M3 Based on SysTick Precise delay ( The system is required to enable SysTick After use ):
边栏推荐
- Bit operation skills
- Interview related high-frequency algorithm test site 3
- Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
- Clickpaas low code platform
- About the prompt loading after appscan is opened: guilogic, it keeps loading and gets stuck. My personal solution. (it may be the first solution available in the whole network at present)
- Fuel consumption calculator
- 概率论与数理统计考试重点复习路线
- 函数(基本:参数,返回值)
- Study notes 7
- Network security - record web vulnerability fixes
猜你喜欢
【虛幻引擎UE】實現UE5像素流部署僅需六步操作少走彎路!(4.26和4.27原理類似)
mxnet导入报各种libcudart*.so、 libcuda*.so找不到
Rome链分析
Fuel consumption calculator
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
【UNIAPP】系统热更新实现思路
Why can't all browsers on my computer open web pages
【FineBI】使用FineBI制作自定义地图过程
小程序中实现文章的关注功能
Uni app change the default component style
随机推荐
PR video clip (project packaging)
Laravel8 export excel file
About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture
Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
Phpmailer reported an error: SMTP error: failed to connect to server: (0)
Hexadecimal to decimal
NetSetMan pro (IP fast switching tool) official Chinese version v5.1.0 | computer IP switching software download
概率论与数理统计考试重点复习路线
How to remove installed elpa package
Clickpaas low code platform
kubernetes集群之调度系统
Use threejs to create geometry, dynamically add geometry, delete geometry, and add coordinate axes
Why do big companies such as Baidu and Alibaba prefer to spend 25K to recruit fresh students rather than raise wages by 5K to retain old employees?
JVM garbage collection
Sword finger offer 07 Rebuild binary tree
[moteur illusoire UE] il ne faut que six étapes pour réaliser le déploiement du flux de pixels ue5 et éviter les détours! (4.26 et 4.27 principes similaires)
Sequence diagram of single sign on Certification Center
Alibaba cloud ECS uses cloudfs4oss to mount OSS
【thingsboard】替换首页logo的方法
Serpentine matrix