用stm32固件库3.4编写Systick

2019-12-11 18:18发布

大伙们,我最近在学习stm32,想用固件库3.4编写一个systick,查了好多资料还是没有搞清楚,特意向大家请教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
cihu
1楼-- · 2019-12-11 20:52
在3.4库里面,只需要调用SysTick_Config函数就可以初始化systick了,下面的例子是产生10ms中断,中断函数在stm32f10x_it.c里的SysTick_Handler。想产生1ms就把100改成1000

int main(void)
{
          /*!< At this stage the microcontroller clock setting is already configured,
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f10x_xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f10x.c file
     */
          if(SysTick_Config(SystemCoreClock / 100))   
          {
                while(1);
          }
      while(1);
}
zhangjinren
2楼-- · 2019-12-11 22:56
顶你,谢谢,不知道中断里面应该些什么?
staroul
3楼-- · 2019-12-11 23:19
你只要看一下《Cortex-M3权威指南》中寄存器的格式就可以直接操作了(如下为查询标志位的方法来延时)
配置Systick的寄存器
void SystickInit(void)
{
    SysTick->CTRL&=0xfffffff8;        //设置时钟源  停止计数
    SysTick->LOAD=9000000-1;         //设置计数值>装载寄存器
    SysTick->VAL=0x00;                  //清空当前计数值
    SysTick->CTRL|=0xfffffff9;         //启动定时器,未使用中断,使用中断用0xfffb
}
在main函数中使用了
if(SysTick->CTRL&0X10000)
    i++;
if(i==3)                             //可以延时三秒
{
     i=0;
     GPIOE->ODR=~GPIOE->ODR;       
}

重点还在于你去看寄存器
bluebox
4楼-- · 2019-12-12 02:27
 精彩回答 2  元偷偷看……
zhouhaiyeild
5楼-- · 2019-12-12 07:37
mark
281257913
6楼-- · 2019-12-12 08:16
mark

一周热门 更多>