主页 > 单片机单片机初始化语句?

单片机初始化语句?

一、单片机初始化语句?

仿照RT-Thread的自动初始化机制,写了一个自动初始化的模块,整个代码仅52字节。

好处:可以实现自动初始化,不用在外部显式地调用。

缺点:初始化逻辑较显式调用的方式模糊,容易引入BUG。

以下是对应的头文件和源文件,初始化顺序分为9级,LOADER_BOARD_EARLY_EXPORT最早,LOADER_APP_LATE_EXPORT最迟。使用方法可以看最后面的Demo。

#ifndef _LOADER__H

#define _LOADER__H

#if defined(__CC_ARM) || defined(__CLANG_ARM) /* ARM Compiler */

#define LOADER_USED __attribute__((used))

#define SECTION(x) __attribute__((section(x)))

#elif defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */

#define LOADER_USED __root

#define SECTION(x) @ x

#elif defined (__GNUC__) /* GNU GCC Compiler */

#define LOADER_USED __attribute__((used))

#define SECTION(x) __attribute__((section(x)))

#endif

typedef int (*init_func_t)(void);

#define LOADER_EXPORT(fn, level) \

LOADER_USED const init_func_t init_##fn SECTION(".loader_fn."level) = fn

#define LOADER_BOARD_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "1")

#define LOADER_BOARD_EXPORT(fn) LOADER_EXPORT(fn, "2")

#define LOADER_BOARD_LATE_EXPORT(fn) LOADER_EXPORT(fn, "3")

#define LOADER_COMPONENT_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "4")

#define LOADER_COMPONENT_EXPORT(fn) LOADER_EXPORT(fn, "5")

#define LOADER_COMPONENT_LATE_EXPORT(fn) LOADER_EXPORT(fn, "6")

#define LOADER_APP_EARLY_EXPORT(fn) LOADER_EXPORT(fn, "7")

#define LOADER_APP_EXPORT(fn) LOADER_EXPORT(fn, "8")

#define LOADER_APP_LATE_EXPORT(fn) LOADER_EXPORT(fn, "9")

int LoaderExec(void);

#endif

#include "Loader.h"

static int loader_start(void)

{

return 0;

}

LOADER_EXPORT(loader_start, "0");

static int loader_end(void)

{

return 0;

}

LOADER_EXPORT(loader_end, "9.end");

int LoaderExec(void)

{

int res = 0;

const init_func_t *fn_ptr;

for (fn_ptr = &init_loader_start; fn_ptr < &init_loader_end; fn_ptr++)

{

res += (*fn_ptr)();

}

return res;

}

/* Loader Demo */

/********************** led.c **********************/

#include "Loader.h"

int led_init(void)

{

/* GPIO初始化 */

return 0;

}

LOADER_APP_EXPORT(led_init);

/********************** main.c **********************/

#include "Loader.h"

int main(void)

{

HAL_Init(); /* 初始化芯片底层,实际上该函数也可以通过loader导出 */

LoaderExec(); /* 加载Loader,里面会调用led_init */

while(1)

{

/* do something */

}

}

二、单片机中断初始化程序?

voidINT_init()//初始化{IT0=0;//外部中断0低电平触发IT1=1;//外部中断1低电平触发PX0=1;//外部中断0分配高优先级PX1=0;IE=0x85;//使能全局中断,外部中断0,外部中断1}voidEX_INT0()interrupt0//外部中断0{//添加自己的功能代码IE0=0;//清零中断标志位}voidEX_INT1()interrupt2//外部中断1{//添加自己的功能代码IE1=0;}

三、51单片机初始化函数?

51单片机的初始化函数是int( ),括号里可以设置参数也可以不设置。

四、单片机为什么要初始化?

复位电路和晶振电路属于纯硬件,不用理会,其它的需要软件做好初始化。软件的初始化一般是以下几个步骤。 如果采用的是汇编语言,一般有如下几项内容

1、设置堆栈地址:比如MOV SP, #60H。

2、设定PSW值,也就是缺省的工作寄存器区。

3、设定与定时器、中断、串口相关的特殊功能寄存器

4、设定各IO口的初始状态,比如将连接键盘的输入输出口均设为1,红外发射电路的初始状态。

5、内存中需要赋初值的寄存器赋初值,比如上电后要显示的内容最好先赋个初值。

6、打开中断允许、启动定时器(这一步也可根据具体需要放在前面或其它地方)

7、开始主程序循环 对前两项的设置可能不是必须的,但是应该成为一种好的习惯。 如果是C语言,除了第1、2项不用管,其它也一样。 如果整个系统在上电后,需要一段时间才能进入稳定状态,可在一开始加入一段循环延时程序,然后再进行其它初始化操作。

五、32单片机初始化的意义?

一般的情况下是在上电的时候初始化,还有就是程序跑飞和出现异常时也要初始化,初始化的目的就是把所有用到的标志位、变量回到你的初始值,以及引脚的分配,配置寄存器写入需要的值,像时钟的选择等。

六、51单片机初始化是什么?

1把某些变量变成初始值,比如0或者1. 2如果用到定时器需要设置定时器的工作方式及初值。 3如果用到中断需要开放相应的中断源的中断并设置优先级。 4如果用到串口需要设置串口相应工作方式及波特率等。 5其它需要预先设置的数据变量及命令字。

七、单片机如何初始化esp8266?

wifi模块的串口与单片机的串口连接,注意模块电源电压为3.3V,如果单片机电源电压与模块电压一样,可以直接连接使用,单片机编程可以考虑上电时给模块初始化(就是按照你需要的通讯方式设置模块的运行状态)就可以通过网络与单片机进行通讯了。

八、单片机初始化函数名有什么?

51单片机的初始化函数是int( ),括号里可以设置参数也可以不设置。

九、如何给单片机系统进行初始化?

你可以参考AT162单片机的DATASHEET来初始化,再根据你所要使用到的模块功能进行初始化,有些是复用口也需要初始化设置,根据IC的DATASHEET就不会错

十、51单片机程序初始化的意义?

初始化顾名思义就是初始配置,不同的使用有不同的配置. 如果只是为了做一个类似点亮一个LED的话,就不用初始化了. 它并不是程序所必要的. 你若用了定时器,设置波特率,及中断等,那你就得初始化,当然初始化并不是非要写成一个函数. 它也可以直接写到main函数的过程中,只是单独放到一个函数中便于阅读程序. 一般分四个步骤:

1)将相应的引脚配置成UART模式 2)配置和使能UART,包括配置波特率,是否使用FIF0,数据帧格式(数据长度,停止位,奇偶校验,收发数据缓冲区大小等)

3)配置中断(一般分3大类,共7种)

4)读写数据

热门文章