在设计软件的时候,有的对时序要求比较严格,但是简单的延时函数又不能准确延时---STM32中有一个系统滴答时钟是不错的配置---
----第一部分是---向滴答时钟寄存器写初值,也就是要根据系统频率来递减----然后为0 则产生中断
void SysTick_Init(uint32_t a) //a-us
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
// if (SysTick_Config(SystemCoreClock / 1000000*a))//写初值---- ST3.0.0库版本
if (SysTick_Config(SystemCoreClock / 1000000*a)) //写初值----ST3.5.0库版本
{
while (1); //写初值失败---则进入while死循环
}
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk; //关闭系统滴答时钟
}
----第二部分是---延时函数----
void Delay_us(__IO u32 nTime)
{
TimingDelay = nTime;//多少个基础节拍
SysTick_Init(1); //1us
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能系统滴答时钟---开始计时
while(TimingDelay != 0); //定时节拍结束
}
void Delay_ms(__IO u32 nTime)
{
TimingDelay = nTime;//多少个基础节拍
SysTick_Init(1000); //1ms
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能系统滴答时钟---开始计时
while(TimingDelay != 0); //定时节拍结束
}
---第三部分是---滴答时钟的中断函数---
void TimingDelay_Decrement(void) //节拍递减---在中断中使用
{
if (TimingDelay != 0x00)
TimingDelay--;
}
void SysTick_Handler(void) //---中断---
{
TimingDelay_Decrement(); //进一次中断递减一次
}
---第四部分---主函数---
int main(void)
{
SysTick_Init(); //初始化
Delay_us(10000); // 10000 * 10us = 100ms
}
上一篇:STM32 MDK 工程创建 图解步骤
下一篇:STM32 SPI NRF24L01复习整理
推荐阅读最新更新时间:2024-11-23 12:13
推荐帖子
- TI秀+我买的开发板
- 本帖最后由led2015于2014-2-2323:56编辑 这两块是我在淘宝花了400块买的DSP2812开发板和M3LM3S6911开发板,都是用在自学上的。这两块板子都是自学开发的基础,值得研究一下的。DSP2812自身具有12bitAD转换器,0~3.3v输入范围。开发板一般会有相关例程。配置EVA中相关的ADC模块控制寄存器,16选1路为模拟信号输入端,设置好外设时钟,启动转换,读取结果寄存器里的值即可。一定要下载最新的FLASH烧写插件哦。而M3LM3s69
- led2015 微控制器 MCU
- 600MA低压差LDO AP1735 AP6256
- 安崴提供低压差600MA输出电流的LDO,AP1735做到600MA/350MV,AP6256做到600MA/500MV需要样品请联系13537795709梁生,QQ291426765邮箱:LY158@TOM.COM600MA低压差LDOAP1735AP6256
- LY158 电源技术
- 求助:读取flash问题
- 我用的单片机是MSP430F149,我想把保存在flash中的数据读取出来,请问有什么办法?谢谢求助:读取flash问题没烧熔丝可以读出,使用仿真器或编程器都可以读出。没烧断熔丝可以用JTAG/BSL读出,如果烧断了,只能用BSL了,并且需要提供密码文件。不好意思,不太明白。我是将现场采集到的数据存到flash中,回到公司再把flash中的数据读到电脑中。问题是我需要重新Debug才能将通过JTAG查看Flash,可是重新Debug会造成Flash中的数据被冲掉啊。请高手详细告诉我办法可
- shenqibuhui 微控制器 MCU
- 电子仿真软件MultiSIM使用技巧
- 我们都知道,电子仿真软件MultiSIM最初由加拿大的IIT公司推出,从Multisim2001开始到后来的Multisim7和Multisim8止;Multisim9到目前的Multisim10版本,已改由美国国家仪器公司(NI公司)所推出。Multisim版本每次升级,软件功能都有相应的提高,但它们的操作方法和电子电路虚拟仿真这一块内容几乎没有太大的变化。也就是说,读者只要掌握和学会了Multisim7软件的使用方法,其它的版本也就触类旁通了。软件更新快,读者也不一定要一味去赶时髦
- qwqwqw2088 电源技术
- 模拟,无处不在
- 网上一篇写的不错的文章,转来给大家看看关键字:模拟电路经常翻阅各种电子行业的平面媒体,每每看见AnalogDevice公司的广告,在广告画面的下方,都会有这么一个广告词“Analogiseverywhere”(见图1.1)。翻译成中文,就是本文的标题“模拟,无处不在”。下载(201.33KB)2011-3-1120:12我想,AnalogDevice公司想通过这个广告词想表达这样几层意思:1.1任何电路都会有可能用到模拟器件我虽然和Ana
- 张无忌1987 模拟电子
- 瑞芯微RK3568鸿蒙开发板OpenHarmony系统修改cfg文件权限方法,深圳触觉智能鸿蒙硬件
- 本文适用OpenHarmony开源鸿蒙系统,本次使用的是深圳触觉智能专注研发生产的鸿蒙开发板,搭载瑞芯微RK3568芯片。一、查看文件路径首先init.rkxxx.cfg文件在系统路径/vendor/etc/,如下图所示:二、文件传至本地将需要需要修改的cfg文件从文件系统中拉下来放在本地目录,命令是:hdcfilerecv'系统路径''本地文件路径',如下
- Industio_触觉智能 ARM技术