BLE5.2 1.0
开发文档说明
xc_drv_systick.c
浏览该文件的文档.
1
25/*-----------------------------------------------------------------------------------
26 INCLUDE HEADE FILES
27 ------------------------------------------------------------------------------------*/
28#include "xc_drv_systick.h"
29#include "xc_drv_clock.h"
30
31/*------------------------------------------------------------------------------------
32 Functions
33 -------------------------------------------------------------------------------------*/
34
36
37void delay_us(uint32_t nus)
38{
39 if (nus == 0)
40 return;
41
42 uint32_t unit = xc_systick_unit_get();
43
44 uint32_t temp;
45
46 SysTick->CTRL = 0x00; // 关闭计数器
47 SysTick->LOAD = unit * nus - unit + 1;
48
49 SysTick->VAL = 0;
50 SysTick->CTRL = 0x05;
51
52 do {
53 temp = SysTick->CTRL; // 读取当前倒计数值
54 } while ((temp & 0x01) && (!(temp & (1 << 16))));
55}
56
57void delay_ms(uint32_t nms)
58{
59 if (nms == 0) {
60 return;
61 }
62
63 do {
64 delay_us(1000);
65 } while (--nms);
66}
67
68__WEAK void systick_callback(void) {}
Systick_Unit_Typedef xc_systick_unit_get(void)
xc_systick_unit_get
The header of xc_drv_clock.c
__WEAK void systick_callback(void)
void delay_ms(uint32_t nms)
void SysTick_Handler(void)
void delay_us(uint32_t nus)
The header of xc_drv_systick.c