stm32之systick
来源:互联网 发布:清华大学网络课程 编辑:程序博客网 时间:2024/06/07 17:29
什么是systick
1.就是stm32内部的一个定时器,非常精确的定时器。又称为滴答定时器。
2.他是24位的,采取向下递减的方式定时。
3.计数一次的时间为1/系统时钟,通常为(1/(168/8)),也就是系统时钟八分频的倒数1/(21MHZ),即计数1us计数21次。所以只要知道计数的次数就知道了计数时间。最大计数时间为798ms
4.systick自带中断,如果你要用他的中断功能,需要打开他的中断开关
配置systick步骤
1.设置时钟源,时钟源包括内部的系统时钟源,也有外部的时钟源,通常选用外部的时终源
2.设置计数初值
3.清空当前计数值
4.打开使能开关
具体配置函数
void SysTick_Init(u8 SYSCLK){ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//这个就是配置时钟源 fac_us=SYSCLK/8; //1us所需的技术次数 fac_ms=(u16)fac_us*1000; //1ms所需的计数次数 }
void delay_us(u32 nus)//us级延迟{ u32 temp; SysTick->LOAD=nus*fac_us; //加载初值 SysTick->VAL=0x00; //清空 SysTick->CTRL|=0x01 ; //打开计数器 do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待时间到 SysTick->CTRL&=~0x01; //关闭 SysTick->VAL =0X00; //清空}
void delay_nms(u16 nms)//ms级延迟{ u32 temp; SysTick->LOAD=(u32)nms*fac_ms; //设初值 SysTick->VAL =0x00; //清空 SysTick->CTRL|=0x01 ; //打开计数器 do { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); //等待 SysTick->CTRL&=~0x01; //关闭计数器 SysTick->VAL =0X00; //清空 }
阅读全文
0 0
- STM32之SysTick
- STM32之SysTick
- stm32之systick
- stm32初学之Systick
- STM32之SysTick学习
- stm32之SysTick定时器
- stm32之systick应用
- STM32之SysTick定时器
- stm32之systick
- STM32之SysTick嘀嗒定时器
- stm32之SysTick的理解
- STM32之SysTick(系统定时器)
- stm32 systick
- STM32 Systick
- stm32 systick
- STM32 SysTick
- STM32之用SysTick做准确定时
- STM32之用SysTick做准确定时
- bootstrap之网格布局
- spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
- Java动态代理的两种实现方法
- 实现对象的复用——享元模式(二)
- java中的java.util.Random类
- stm32之systick
- python---正则使用
- python print UUID的问题
- Java设计模式百例
- exists真的就比in的效率高吗?
- android 上usb通信
- java ConcurrentHashMap contains 问题
- Teaching Machines to Converse--阅读笔记1 摘要及介绍
- 做leetcode时的一点小发现