SysTick 倒计时
来源:互联网 发布:微信返利系统 淘宝客 编辑:程序博客网 时间:2024/06/06 04:16
include “stm32f10x.h”
static __IO u32 Timing;
void LED_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStructure);GPIOD->BSRR = GPIO_Pin_2;
}
/**寄存器版的SysTick******(缺点是while(!(SysTick->CTRL & =0X00010000));
在这个时候会浪费CPU*
void Delay_Us(uint32_t nTime)
{
SysTick->LOAD = 72*nTime;//装入定时的次数
* LOAD 重装值寄存器 就是当计数到0的说时候,再次从该数值进行倒计时
**
SysTick->CTRL = 5;// CTRL是控制和状态寄存器
* 16 COUNTFLAG 当计数满的时候自动置为1
2 CLKSOURCE 当该位是0的时候选择的是72M的时钟 当该位是1的时候选择的是9M的时钟 1 SysTick 当该位是0的时候计数到0的时候不会发送异常处理的标志 当该位是1的时候计数到1的时候会发送异常处理的标志 0 ENABLE (使能位)当该位为0的时候SysTick不会打开 当该位为1的时候打开SysTick;
while(!(SysTick->CTRL&0x00010000));
SysTick->CTRL = 0;
}*/
void SysTick_Handler()
{
if(Timing!=0)
Timing–;
}
void Delay_us(uint32_t us)
{
Timing = us;
SysTick->CTRL |= 0x07;
while(Timing!=0);
SysTick->CTRL |= 0x00;
}
void Delay_ms(uint32_t ms)
{
Delay_us(ms*1000);
}
void Delay_s(uint32_t s)
{
Delay_ms(s*1000);
}
int main()
{
//uint32_t i;
LED_Init();
SysTick_Config(72);
while(1)
{
GPIO_ResetBits(GPIOD,GPIO_Pin_2);//输出低电平
Delay_s(1);
GPIO_SetBits(GPIOD,GPIO_Pin_2);//输出高电平
Delay_s(1);
}
}
- SysTick 倒计时
- Systick
- systick
- SysTick
- Systick
- Systick
- SysTick定时器
- SysTick定时器
- stm32 systick
- STM32 Systick
- STM32F4 systick
- SYSTICK用法
- PIT systick
- SYSTICK配置
- systick介绍
- systick.c
- systick.h
- SysTick时钟
- 哈工大- 2016级新生程序设计全国邀请赛 行编辑器
- 【MongoDb入门】 分片技术
- 记android学习之路----数据持久化之sqlite操作实例2
- vs2013下编译geos-3.5.1
- read the pragmatic programmer--chapter 4
- SysTick 倒计时
- Delete Node in a Linked List
- TCP三次握手建连以及四次挥手断连详解
- 【MongoDb入门】运维技术
- Swift3.0学习笔记-Generics
- python入门
- printf函数
- AOI中如何设计通用的图像处理方法
- 记android学习之路----数据持久化之SharedPreferences