技术标签: STM32学习与应用
学习理解STM32的串口通信,中断以及I2C的使用。
应用:使用中断和串口通通信获取按键值发送出来并显示到数码管上。使用I2C 将获取到的按键值保存到内存中。
计算机的CPU与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。
//查询模式(blocking mode阻塞模式)调用这个函数并在等待时间内一直等待操作完成。
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
//中断模式(non- blocking mode)
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
//DMA模式
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
//中断服务函数
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
//中断回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);
若单片机作为主机(主动发起通信任务)与其他从机双向通信:
根据任务,查询方式发送、查询方式接收或中断方式接收。
若单片机作为从机与其他主机机双向通信:
中断方式接收,查询方式发送(在接收中断程序中发送)。
查询发送 代码
在main.c 中主函数里 添加 发送代码
HAL_UART_Transmit(&huart1,connctt,15,500);
上面的receive_str 要在前面声明
uint8_t connctt[15]=“hello world”;
上面 发送函数里面参数,第一个为使用中断地址,第二个要发送的数组首地址,第三个发送字符串长度,第四个timeout (超过那个时间没法送成功,就会报错)
如果需要连续发送的到 while循环中,进行发送,加上延时,不然会一直连续发送。
查询接收代码
HAL_UART_Receive(&huart1,receive,15,500);
和查询发送一样 需要对receive进行声明,uint8_t receive[15];
参数也都一样
中断接收代码
/定义变量
uint8_t aRxBuffer;
//开启中断接收
HAL_UART_Receive_IT(&huart1,(uint8_t *)&aRxBuffer,1);
中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
HAL_UART_Transmit(&huart1,(uint8_t ))&aRxBuffer,1,0xffff); //为验证进入这个函数,把接收到的数据通过串口发送出去
HAL_UART_Receive_IT(&huart1,(uint8_t ))&aRxBuffer,1); //重新打开串口中断
}
注意中断接收每次接收必须要定长 如果接受到的数据是4个,而函数参数接受5个,那么中断接受不到结束的信号会一直等直到timeout。(查询方式的不需要)
编译
选择要使用的发送方式 和接收方式 写入代码 。
编译 传入hex文件
打开串口工具 (下面所使用到的安装包我都放到了个人网盘上,下载链接
打开串口后 从板子执行发送的字符串就会显示到上面,下面可以进行手动发送
(板子不在身边… 没法发测试图了… )
综合应用
综合应用放到另一篇文章上
使用串口通信将按键值发送出来 ,并使用I2C将按键值保存
Neo4j管理界面提供了一个官方入门实例“电影关系图”,点击下述步骤。单击实例引导页换页箭头,单击代码块,运行创建关系。一、检索节点例1、查找名为Tom Hanks的人MATCH (TomH {name:"Tom Hanks"})RETURN TomH该命令使用match查找匹配条件{name:“Tom Hanks”}的节点并返回。例2、查找名为Cloud Atlas的电影...
问题描述:win7下,cmd运行 输入sqlplus报一下错误SP2-1503: 无法初始化 Oracle 调用界面SP2-0152: ORACLE 不能正常工作解决办法1、cmd右键--以管理员身份运行--ok2、找到oracle安装路径,如 D:\oracle\product\10.2.0\db_2\BIN下面的sqlplusw.exe 右键--以管理员身份运行--ok3、在开始菜单,oracle目录下
腾讯地图H5位置获取直接ctrl+c 就行了直接打开<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>前端定位模块</title&
一、Android 体系结构Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。Android主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC等体系结构的机器上同样
1、线程的基本概念概念线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。************************好处(1)易于调度。...
pip安装pyCrypto时报错Could not find a version that satisfies the requirement pyCrypto (from versions: ):可能网络的问题,可以使用镜像源加速改为豆瓣源:pip install pyCrypto-i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com或者pip3 install pyCrypto-i htt...
明天就是元旦了 2016年啦 加油吧 明天你好!!键盘监听:#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong)UIToolbar *toolbar;@[email protected] ViewController-
1024程序员节过去了,码农们也要开始加班了!也许会有人说,加班是程序员的常态,还有人说,程序员工资那么高,当然要加班了!事实真的如此吗?在当下的就业市场下,程序员的高薪人所共知,风头甚至盖过了金融业。有数据显示,互联网从业人员平均年薪高达19万元,其中10%年薪超过50万。▌月入过万,很轻松在这个光鲜的数据下,付出的是程序员的辛
问题描述: 400. That’s an error.Error: redirect_uri_mismatchThe JavaScript origin in the request, http://www.asiajy.com, does not match the ones authorized for the OAuth client. Visit ht
Spring中Bean的生命周期详解Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。Bean的生命周期就是指:在Spring中,一个Bean是如何生成的,如何销毁的?...
博客在网络上也趋于一种聊天和求知的平台像一些知名的博客大部分都是名人或者专家以及发表一些权威知识的站长,那么对于我们来说该如何去做好自己的博客呢,利用博客将自己所知道或者自己擅长的一些事一些物通过网络这个平台来展示给大家呢?下面就让武汉得如论坛来跟大家简单的阐述下如何利用一些SEO基础培训里面的知识来做好博客站。 第一点:没有出色的写作能力如何利用SEO知识使博客获得收录和排名
1.第二次装Linux系统,把第一次的过程忘得一干二净,这次记录下。这里用的是戴尔服务器,首先服务器开机,按F11,进入下页面。选择第二项,BIOS Boot Menu,进入后选择U盘启动。不同型号服务器或电脑的U盘启动快捷键不同,可自行百度。选择U盘启动,这里图片看不清楚,可以通过上下移动光标,寻找包含USB的一项,就是U盘启动项。2.这里选择第一项 Install CentOS..._1671465600