完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
对于systick的定时原理可以类比51单片机的定时器进行学习
具体的实现步骤如下: 1:对systick进行配置{void systick_init(void)},在这里需要注意的是“SystemCoreClock”这个值要在它所限制的范围内,“SystemCoreClock“是系统已经定义的宏(系统时钟频率的的值=7200 0000),在这里我们选取的时钟源是AHB:72MHZ; 计算的公式T=SystemCoreClock/(72M),当然在这里可以随意设定SystemCoreClock的值从而改变定时的基时间;配置中所调用的SysTick_Config()函数在core_cm3.c中定义了,在手册上找不到其用法;还要注意在这里得先关闭定时器”SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk“; 2:对延时函数和和中断服务函数的编写 在里遇到的难题是:中断响应函数和延时函数所共用的参数count该怎样设置, 在这里解决的方法是:首先得定义为全局变量”static uint32_t count“,接着用函数调用的方法 void delay(uint32_t j) { count=j; SysTick->CTRL |=SysTick_CTRL_ENABLE_Msk; void delay(uint32_t j) { count=j; SysTick->CTRL |=SysTick_CTRL_ENABLE_Msk; while(count!=0); } void intettupt_systick(void) { if(count!=0x00) count--; } } 直接在STM32f10x_it.c 中调用这个函数就行了,在这里需要注意的一点是在延时函数中得打开定时器,而且得放在while(count!=0)前面; 在怎个配置过程中进行差错时要注意是否在哪一段陷入了死循环,因为在设置了多个while语句; PS:在每一模块的源程序在主函数需要调用其函数是需要在主函数中对其进行头文件中的声明 评分
|
||||
相关推荐
|
||||
991 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
970 浏览 2 评论
2080 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1177 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 00:09 , Processed in 0.513735 second(s), Total 77, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号