F429-系统外设之Systick

Systick :24位 只    能递减,存在于内核 所有Cortex-Mnei内核的单片机都有这个定时器

                                                  重载寄存器     STK_LOAD

                                                          ↓     中断                

  STK_CLK(时钟)    ---->          递减寄存器     STK_VAL (当寄存器值为0会产生中断---开启中断)

                                                                          值为零后可以改变  STK_CLK   STK_LOAD的值   每次递减1使用 1/STK_CLK   

                                                                          秒的时间

                  



STD库实现:

systick.c:

//触发中断次数 每次中断时间间隔为 
//Systick_Init 中设置 
 __IO u32 Timing;

//SysTick_Type              core_cm4.h(misc.c)
void Systick_Init(void)
{
     // SysTick_Config  该函数为设置计数值
     // 同时开启中断,当计数值为0 时 触发中断
     // 最大为:SysTick_LOAD_RELOAD_Msk     
     //(uint32_t SystemCoreClock = 180000000)  / 100000 = 1800
     // 1800 / 180Mhz(主频) = 10us
    if (SysTick_Config(SystemCoreClock / 100000))
    {
        /* Capture error */
        while (1);
    }
}

void Delay_us(__IO u32 nTime)
{
    Timing = nTime;    
    while(Timing != 0);
}

stm32f4xx_it.c


extern __IO u32  Timing;

void SysTick_Handler(void)
{
	if (Timing != 0x00)
	{ 
		Timing--;
	}
}

man.c

LED_GPIO_Config();
Systick_Init();
LED1_ON;
Delay_us(100000);
LED2_ON;
Delay_us(100000);
LED3_ON;
这里可以设置
SysTick_Config(SystemCoreClock / 100000(这个值小些 可以减少频繁进入中断)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值