串口相关的函数

要使能串口 1 的中断,同时设置抢占优先级为 1,子优先级位 2,初始化的方法是:

USART_InitTypeDef USART_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口 1 中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;// 子优先级位 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

//IRQ 通道使能

NVIC_Init(&NVIC_InitStructure);

//根据上面指定的参数初始化 NVIC 寄存器

这里我们讲解了中断的分组的概念以及设定优先级值的方法,至于每种优先级还有一些关于清

除中断,查看中断状态,这在后面我们讲解每个中断的时候会详细讲解到。最后我们总结一下

中断优先级设置的步骤:

1.

系统运行开始的时候设置中断分组。确定组号,也就是确定抢占优先级和子优先级的

分配位数。调用函数为 NVIC_PriorityGroupConfig();

2.

设置所用到的中断的中断优先级别。对每个中断调用函数为 NVIC_Init();

void USART1_IRQHandler(void)                
//串口1中断服务程序

{

u8 Res;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)

{

Res =USART_ReceiveData(USART1);//(USART1->DR);
//读取接收到的数据

/*注意下面这条语句,if((USART_RX_STA & 0x8000)==0)不能改为if(USART_RX_STA & 0x8000 == 1)*/

if((USART_RX_STA & 0x8000)==0)//接收未完成

{

if(USART_RX_STA & 0x4000)//接收到了0x0d

{

if(Res!=0x0a)

USART_RX_STA=0;//接收错误,重新开始
 //0X0A 换行

else

USART_RX_STA|=0x8000;
//接收完成了

}

else //还没收到0X0D

{

if(Res==0x0d)

USART_RX_STA |= 0x4000;

else

{

USART_RX_BUF[USART_RX_STA & 0X3FFF]=Res ;

USART_RX_STA++;

if (USART_RX_STA > (USART_REC_LEN-1))

USART_RX_STA=0;//接收数据错误,重新开始接收

}

}

}

}

}

串口相关的函数,布布扣,bubuko.com

时间: 2024-11-09 22:19:15

串口相关的函数的相关文章

几个和DataTable相关的函数

一.关于本文 本文中的DataTableHelper类包括了4个操作DataTable的函数,分别是 1)public static DataTable GetTestDataTable() 这是一个测试用的函数,生成一个有内容的DataTable 2)public static string PrintDataTable(DataTable dt) 这个函数向控制台打印一个DataTable中的所有内容 3)public static DataTable GetAnotherDataTable

(二十四)linux新定时器:timefd及相关操作函数

timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #include <sys/timerfd.h> int timerfd_create(int clockid, int flags); int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itim

Java Thread 相关的函数

构造方法摘要 Thread()          分配新的 Thread 对象. Thread(Runnable target)          分配新的 Thread 对象. Thread(Runnable target, String name)          分配新的 Thread 对象. Thread(String name)          分配新的 Thread 对象. Thread(ThreadGroup group, Runnable target)          分

Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)

为了保证应用程序存储数据的安全性,开发者在开发应用程序的过程中需要注意使用Android 应用程序的内部存储空间. 根据不同的要求,将对应的数据文件.缓存文件.临时文件等分别存储在相应的位置. 注意:存储在SDCard 上的文件,将对任何Android 应用程序可见,并具有存取权限.因此,仅仅是应用程序自己使用,的临时文件也不要存储到SDCard上. 应用程序内部存储相关函数,请参考Android 官方网站, 下文对几个重要函数做了中文介绍: 出处:http://blog.csdn.net/hu

与对象相关的函数

与对象相关的函数 get_object_vars();????????用于获取对象中的公有属性 示例: is_subclass_of(象名或类名,父类名);????????判断一个类是否是另一个类的子类 class_exists(类名)????????判断一个类是否存在

Scala中Zip相关的函数

在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1.zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组.如果其中一个参数元素比较长,那么多余的参数会被删掉.看下英文介绍吧: Returns a list formed from this list and another iterable collection by combining

Lua中编译执行代码相关的函数以及机制

可以说Lua之所以称为是一种解释型的语言,正是因为有诸如load这样的函数,因为这样的函数使得Lua可以执行动态生成的代码.下面具体来分析这些函数.   load函数 load函数原型如下: load (chunk [, chunkname [, mode [, env]]]) 该函数加载一个chunk,如果没有错误,则返回一个函数.如果传入chunk的值是一个字符串,则就加载这个字符串:如果传入chunk的值是一个函数,则这个函数必须返回一个字符串,并且load会一直调用这个函数,直到这个函数

串口协议匹配函数,避免串口数据接收时顺序换乱错误

按照协议匹配,避免串口数据接收时顺序换乱错误. 包头 长度 地址码 回复状态 校验和 包尾 备注 C0C0 02 F5 AA YY CF 成功 1,转移字符 a)              数据包基本格式中的数据长度.数据和校验和中如果出现关键字C0. CF或CA则需要在其前端加上转义字符CA,即将数据C0.CF或CA发送成CAC0.CACF或CACA,将数据C0C0发送成CAC0CAC0. b)              数据包基本格式中的数据长度length以有效数据的数量为准,即不 需要也

PHP中文件类型 文件属性 路径以及 文件相关的函数

一: 文件类型判断: 1.is_dir()  判断是不是目录 2.is_file() 判断是不是文件 3.is_executeable() 判断是不是可执行文件 4.is_readable()  判断是不是可读文件 5.is_writable() 判断是不是可写文件 6.is_link()  判断是不是快捷方式 二:文件属性: 1.file_exits()  文件是否存在 2.filesize() 文件大小 3.filectime()  文件创建时间 4.filemtime() 文件修改的时间