1. 首页
  2. 综合百科
  3. 12m晶振的延时函数(晶振12mhz 设计延时1s 汇编)

12m晶振的延时函数(晶振12mhz 设计延时1s 汇编)

简介:关于12m晶振的延时函数(晶振12mhz 设计延时1s 汇编)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

各位好,下面和大家分享一下12m晶振的延时功能(晶振12mhz设计延时1s的汇编)。下面详细解释一下。现在让我们来看看!

1.如何将1.stm32外置晶振的系统延时功能从8m改为12m?

下面,通过三个简单的步骤,我们可以让你随意使用4—16MHz内任意频点的晶振。我们以STM32F10x_StdPeriph_Lib_V3.4.0为例。第一步是打开stm32f10x.h,并将

#DEFINEHSE_VALUE((UINT32_T)800000)修改为:

#定义HSE_VALUE((uint32_t)12000000)

其次,打开system_stm32f10x.c,修改PLL参数,并更改

RCC->;CFGR&;=(uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLmull));

RCC->;CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLmull9);修改为:

RCC->;CFGR&;=(uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLmull));

RCC->;CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLmull6);到目前为止,原始文件已被修改。如果要将主频修改为其他频率,请自行修改。但直到现在,如果直接编译调试,还是会出现前面提到的USART波特率不正确,Systick走时间不准确等问题。原因是我们需要修改第三部分,第三部分不在原文件中,而是在编译环境中。我们以基尔·MDK为例来说明。

第三步:打开已经建立的STM32项目,选择Projects->OptionsforTarget***,找到Target选项卡。你会发现外部晶振默认还是8MHz。我们将外部晶振参数修改为12MHz,确认保存,重新编译调试,你会发现所有参数都回到正常轨道。如果波特率设置为9600,则不会达到144000。

如何用延时功能延时2.24M晶振

#包括

#defineucharunsignedchar#defineuintunsignedint//Delay子程序voidmDelay(ucharDelay){ucharI;for(;延迟>0;delay-){for(I=0;i}}voidmain(){uchari,d;P0=0;//这样LED就亮了。

姆德雷(250);//延迟250mS(12M晶体振荡器)

姆德雷(250);//延迟250mS(12M晶体振荡器)

while(1){d=0x01;for(I=0;I{P0=~d;//数据反转。

D//左移一位mdelay(200);//延时200mS(12M晶振)}}

#包括

#定义uchar无符号字符

#defineuintunsignedint//delay子例程voidmDelay(ucharDelay)

{ucharI;for(;延迟>0;延迟-)

{for(I=0;i}}voidmain(){uchari,d;P0=0;//这样LED就亮了。

姆德雷(250);//延迟250mS(12M晶体振荡器)

姆德雷(250);//延迟250mS(12M晶体振荡器)

while(1){d=0x01;for(I=0;I{P0=~d;//数据反转。

D//左移一位mdelay(200);//延时200mS(12M晶振)}}

3.求指教ATmega128在8M内部晶振下ms和us的精确延时子程序。

//用户级延迟

Voiddelay_1us(void)//1us延迟函数,不能连续调用,

{

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

}

Voiddelay_3us(void)//3us延迟函数,可以重复调用,不影响精度。

{

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

ASM(“nop”);

}

Voiddelay_10us(void)//10us延迟函数,可以重复调用,不影响精度。

{

delay_3us();

delay_3us();

delay_3us();

}

Voiddelay_50us(void)//48us延迟函数,可以重复调用,不影响精度。

{

delay_10us();

delay_10us();

delay_10us();

delay_10us();

delay_10us();

}

voiddelay_100us(void)//exactly98us延迟函数,可以重复调用,不影响精度。

{

delay_50us();

delay_50us();

delay_3us();

}

//毫秒延迟

无效延迟_1毫秒(无效)

{

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

delay_100us();

}

无效延迟_毫秒(单位毫秒)

{

当(毫秒)

delay_1ms();//在8MHz主频下,25分钟误差小于1秒。

}

4.如何将4.stm32外置晶振的延时功能从8m改为12m?

下面,通过三个简单的步骤,我们可以让你随意使用4—16MHz内任意频点的晶振。我们以STM32F10x_StdPeriph_Lib_V3.4.0为例。

第一步,打开stm32f10x.h,将#defineHSE_value((uint32_t)800000)改为#defineHSE_value((uint32_t)1200000)。第二步是打开system_stm32f10x.c,修改PLL参数。setRCC->cfgr&=(uint32_t)((uint32_t)~(RCC_cfgr_pllsrc|RCC_cfgr_pllxtpre|RCC_cfgr_PLLmull));RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLmull9);修改为:RCC->CFGR&=(uint32_t)((uint32_t)~(RCC_cfgr_pllsrc|RCC_cfgr_pllxtpre|RCC_cfgr_PLLmull));RCC->CFGR|=(uint32_t)(RCC_CFGR_PLLSRC_HSE|RCC_CFGR_PLLmull6);到目前为止,原始文件已被修改。如果要将主频修改为其他频率,请自行修改。但直到现在,如果直接编译调试,还是会出现前面提到的USART波特率不正确,Systick走时间不准确等问题。原因是我们需要修改第三部分,第三部分不在原文件中,而是在编译环境中。

我们以基尔·MDK为例来说明。第三步:打开已经建立的STM32项目,选择Projects->OptionsforTarget***,找到Target选项卡。你会发现外部晶振默认还是8MHz。我们将外部晶振参数修改为12MHz,确认保存,重新编译调试,你会发现所有参数都回到正常轨道。如果波特率设置为9600,则不会达到144000。

5.单片机不同晶振的延迟时间怎么计算?

一般来说,如果正常人难以忍受通过延时功能得到一个准确的延时时间(比如1us和2us),可以在编辑环境中点击放大镜图标,左边会弹出一个显示条。sys下的sec是延迟时间(通过设置断点),你可以改变函数中的变量值来大致调出所需时间(希望你不要固执地试图调出所需时间,因为这会让你享受漫长的调试日。

自然,晶振频率不同时,同样的参数,延迟时间也会不同。另外,如果你真的需要得到一个更准确的延迟时间,我建议你使用定时器/计数器。至于这个东西怎么用,很简单!不到十分钟就能学会的东西!这里没有教程,用你调试的时间去学,会让你更有成就感。

写了这么多,希望有所帮助。

6.求ATmega128在8M内部晶振下ms和us的精确延时子程序。

//美国级延迟voiddelay_1us(void)//1us延迟函数,不能连续调用,{ASM("nop");ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);}voiddelay_3us(void)//3usdelay函数,可以重复调用,不影响精度{ASM("nop");ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);ASM(“nop”);}voiddelay_10us(void)//10us延迟函数,可以重复调用,不影响精度{delay_3us();delay_3us();delay_3us();}voiddelay_50us(void)//48us延迟函数,可以重复调用,不影响精度{delay_10us();delay_10us();delay_10us();delay_10us();delay_10us();}voiddelay_100us(void)//exactly98us延迟函数,可以重复调用,不影响精度{delay_50us();delay_50us();delay_3us();}//ms级延迟voiddelay_1ms(void){delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();delay_100us();}voiddelay_ms(uintms){while(ms-)delay_1ms();//在8MHz主频下,25分钟误差小于1秒。

7.8MHZ晶振定时10us怎么写,C语言

是用定时器中断还是用软件计时(相当于延时)?

定时器中断:

定时器0,16位自动过载,1T

voidtimer0init(void)//8MHz时10微秒

{

AUXR|=0x80//定时器时钟1T模式

TMOD&;=0xF0//设置定时器模式

TL0=0xB0//设置定时初始值

TH0=0xFF//设置定时初始值

TF0=0;//清除TF0标志

TR0=1;//定时器0开始计数。

}

软件延迟:

voidDelay10us()//@8MHz

{

无符号字符I;

_nop_();

_nop_();

i=17

while(-I);

}

如何用延时功能延时8.24M晶振

你可以用强波,效果很好。哦,stamp#include#defineucharunsignedchar#defineuintunsignedint//Delay子程序voidmDelay(ucharDelay){ucharI;for(;延迟>0;delay-){for(I=0;i}}voidmain(){uchari,d;P0=0;//这样LED就亮了。

姆德雷(250);//延时250mS(12M晶振)mdelay(250);//延时250mS(12M晶振)而(1){d=0x01;for(I=0;I{P0=~d;//数据反转。D//左移一位mdelay(200);//延时200mS(12M晶振)}}}学会交流,看签名!欢迎学习单片机#include#defineucharunsignedchar#defineuintunsignedint//Delay子程序voidmDelay(ucharDelay){ucharI;for(;延迟>0;delay-){for(I=0;i}}voidmain(){uchari,d;P0=0;//这样LED就亮了。

姆德雷(250);//延时250mS(12M晶振)mdelay(250);//延时250mS(12M晶振)而(1){d=0x01;for(I=0;I{P0=~d;//数据反转。D//左移一位mdelay(200);//延时200mS(12M晶振)}}}学会交流,看签名!欢迎大家一起学习单片机。

以上说明了12m晶振的延时功能(12mhz晶振设计延时1s的编写)。

本文主要介绍了关于12m晶振的延时函数(晶振12mhz 设计延时1s 汇编)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/233199.html