当前位置:网站首页>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 ):
边栏推荐
- “金九银十”是找工作的最佳时期吗?那倒未必
- Mixed compilation of C and CC
- [understand series after reading] 6000 words teach you to realize interface automation from 0 to 1
- [illusory engine UE] method to realize close-range rotation of operating objects under fuzzy background and pit recording
- Kwai, Tiktok, video number, battle content payment
- JVM garbage collection
- MacBook安装postgreSQL+postgis
- Seven join join queries of MySQL
- A應用喚醒B應該快速方法
- DFS and BFS concepts of trees and graphs
猜你喜欢
As soon as I write the code, President Wang talks with me about the pattern all day
Rome链分析
[phantom engine UE] package error appears! Solutions to findpin errors
Threejs rendering obj+mtl model source code, 3D factory model
【虚幻引擎UE】打包报错出现!FindPin错误的解决办法
Ctfshow web entry code audit
陇原战“疫“2021网络安全大赛 Web EasyJaba
Pyqt5 displays file names and pictures
Moco is not suitable for target detection? MsrA proposes object level comparative learning target detection pre training method SOCO! Performance SOTA! (NeurIPS 2021)...
[finebi] the process of making custom maps using finebi
随机推荐
Study notes 7
Kwai, Tiktok, video number, battle content payment
How to force activerecord to reload a class- How do I force ActiveRecord to reload a class?
【科普】热设计基础知识:5G光器件之散热分析
Interview byte, pass the exam and directly work on three sides. As a result, I found an architect to hang me?
[illusory engine UE] method to realize close-range rotation of operating objects under fuzzy background and pit recording
How does the applet solve the rendering layer network layer error?
Serpentine matrix
技术教程:如何利用EasyDSS将直播流推到七牛云?
Network security - record web vulnerability fixes
Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
MySQL: view with subquery in the from clause limit
Containerd series - detailed explanation of plugins
Pyqt5 displays file names and pictures
Phpmailer reported an error: SMTP error: failed to connect to server: (0)
指针函数(基础)
Machine learning decision tree
Containerd series - what is containerd?
长度为n的入栈顺序的可能出栈顺序种数
学习MVVM笔记(一)