stm32的rxne和idle中断_HAL库的STM32F767的DMA通过IDLE中断接收数据但不能访问
仿真能看到接收缓冲区数组中的数据,但不能访问,如果不访问,再开启DMA接收能正常接收,并且在仿真状态下也能查看。只要访问一次这个数组,下一次开启DMA接收后就不能接收数据了。
原代码如下:
if(rx_end == 1){
rx_end = 0;
HAL_UART_DMAStop(&UART1_Handler);
LCD_ShowString(300, 400, 200, 16, 16, "success!");
LCD_ShowString(230, 400, 200, 16, 16, aRxBuffer); //这条不能执行,执行就不能再接收数据
//屏蔽掉这条在仿真状态下能观察aRxBuffer接收正常
HAL_UART_Receive_DMA(&UART1_Handler, aRxBuffer, RXBUFFERSIZE);
}
配置原代码如下:
{
__HAL_RCC_DMA2_CLK_ENABLE(); //DMA2ʱÖÓʹÄÜ
__HAL_RCC_GPIOA_CLK_ENABLE(); //ʹÄÜGPIOAʱÖÓ
__HAL_RCC_USART1_CLK_ENABLE(); //ʹÄÜUSART1ʱÖÓ
GPIO_Initure.Pin=GPIO_PIN_9; //PA9
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_Initure.Pull=GPIO_PULLUP; //ÉÏÀ
GPIO_Initure.Speed=GPIO_SPEED_FAST; //¸ßËÙ
GPIO_Initure.Alternate=GPIO_AF7_USART1; //¸´ÓÃΪUSART1
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //³õʼ»¯PA9
GPIO_Initure.Pin=GPIO_PIN_10; //PA10
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //³õʼ»¯PA10
UART1_Handler.Instance=USART1; //USART1
UART1_Handler.Init.BaudRate=9600; //²¨ÌØÂÊ
UART1_Handler.Init.WordLength=UART_WORDLENGTH_8B; //×Ö³¤Îª8λÊý¾Ý¸ñʽ
UART1_Handler.Init.StopBits=UART_STOPBITS_1; //Ò»¸öֹͣλ
UART1_Handler.Init.Parity=UART_PARITY_NONE; //ÎÞÆæÅ¼Ð£Ñéλ
UART1_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //ÎÞÓ²¼þÁ÷¿Ø
UART1_Handler.Init.Mode=UART_MODE_TX_RX; //ÊÕ·¢Ä£Ê½
HAL_UART_Init(&UART1_Handler); //HAL_UART_Init()»áʹÄÜUART1
//Tx DMAÅäÖÃ
UART1TxDMA_Handler.Instance = DMA2_Stream7; //Êý¾ÝÁ÷Ñ¡Ôñ
UART1TxDMA_Handler.Init.Channel = DMA_CHANNEL_4; //ͨµÀÑ¡Ôñ
UART1TxDMA_Handler.Init.Direction = DMA_MEMORY_TO_PERIPH; //´æ´¢Æ÷µ½ÍâÉè
UART1TxDMA_Handler.Init.PeriphInc = DMA_PINC_DISABLE; //ÍâÉè·ÇÔöÁ¿Ä£Ê½
UART1TxDMA_Handler.Init.MemInc = DMA_MINC_ENABLE; //´æ´¢Æ÷ÔöÁ¿Ä£Ê½
UART1TxDMA_Handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; //ÍâÉèÊý¾Ý³¤¶È:8λ
UART1TxDMA_Handler.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; //´æ´¢Æ÷Êý¾Ý³¤¶È:8λ
UART1TxDMA_Handler.Init.Mode = DMA_NORMAL; //ÍâÉèÁ÷¿ØÄ£Ê½
UART1TxDMA_Handler.Init.Priority = DMA_PRIORITY_MEDIUM; //ÖеÈÓÅÏȼ¶
UART1TxDMA_Handler.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
UART1TxDMA_Handler.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
UART1TxDMA_Handler.Init.Memburst = DMA_MBURST_SINGLE; //´æ´¢Æ÷Í»·¢µ¥´Î´«Êä
UART1TxDMA_Handler.Init.PeriphBurst = DMA_PBURST_SINGLE; //ÍâÉèÍ»·¢µ¥´Î´«Êä
// HAL_DMA_DeInit(&UART1TxDMA_Handler);
HAL_DMA_Init(&UART1TxDMA_Handler);
__HAL_LINKDMA(&UART1_Handler, hdmatx, UART1TxDMA_Handler);
//Rx DMAÅäÖÃ
UART1RxDMA_Handler.Instance = DMA2_Stream2; //Êý¾ÝÁ÷Ñ¡Ôñ
UART1RxDMA_Handler.Init.Channel = DMA_CHANNEL_4; //ͨµÀÑ¡Ôñ
UART1RxDMA_Handler.Init.Direction = DMA_PERIPH_TO_MEMORY; //´æ´¢Æ÷µ½ÍâÉè
UART1RxDMA_Handler.Init.PeriphInc = DMA_PINC_DISABLE; //ÍâÉè·ÇÔöÁ¿Ä£Ê½
UART1RxDMA_Handler.Init.MemInc = DMA_MINC_ENABLE; //´æ´¢Æ÷ÔöÁ¿Ä£Ê½
UART1RxDMA_Handler.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; //ÍâÉèÊý¾Ý³¤¶È:8λ
UART1RxDMA_Handler.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; //´æ´¢Æ÷Êý¾Ý³¤¶È:8λ
UART1RxDMA_Handler.Init.Mode = DMA_NORMAL; //ÍâÉèÁ÷¿ØÄ£Ê½
UART1RxDMA_Handler.Init.Priority = DMA_PRIORITY_MEDIUM; //ÖеÈÓÅÏȼ¶
UART1RxDMA_Handler.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
UART1RxDMA_Handler.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
UART1RxDMA_Handler.Init.MemBurst = DMA_MBURST_SINGLE; //´æ´¢Æ÷Í»·¢µ¥´Î´«Êä
UART1RxDMA_Handler.Init.PeriphBurst = DMA_PBURST_SINGLE; //ÍâÉèÍ»·¢µ¥´Î´«Êä
HAL_DMA_Init(&UART1RxDMA_Handler);
__HAL_LINKDMA(&UART1_Handler, hdmarx, UART1RxDMA_Handler);
__HAL_UART_CLEAR_IDLEFLAG(&UART1_Handler);
__HAL_UART_ENABLE_IT(&UART1_Handler, UART_IT_RXNE); //¿ªÆô½ÓÊÕÖжÏ
HAL_NVIC_EnableIRQ(USART1_IRQn); //ʹÄÜUSART1ÖжÏͨµÀ
HAL_NVIC_SetPriority(USART1_IRQn, 3, 3); //ÇÀÕ¼ÓÅÏȼ¶3£¬×ÓÓÅÏȼ¶3
HAL_UART_Receive_DMA(&UART1_Handler, aRxBuffer, RXBUFFERSIZE); //开启了一次
}
接收中断函数
void USART1_IRQHandler(void)
{
unsigned short y;
if((__HAL_UART_GET_FLAG(&UART1_Handler, UART_IT_RXNE) != RESET))
{
y = 400;
LCD_ShowString(30, y, 200, 16, 16, "UART_IT_RXNE");
LCD_ShowNum(180, y, RX_ADDR, 3, 16);
rx_end = 1;
if(RX_ADDR < 900){
RX_ADDR++;
}
else{
RX_ADDR = 0;
}
}
HAL_UART_IRQHandler(&UART1_Handler);
}
0
相关文章:

使用OpenRowSet操作Excel Excel导入数据库
使用 OpenRowSet 和 OpenDataSource 访问 Excel 97-2007 测试文件:D:\97-2003.xls和D:\2007.xlsx,两个文件的内容是一模一样的。 测试环境:SQL Server 2000 / 2005。 ---------------------------------------------------------------------…

在Windows上搭建Git Server
Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用。 那么私有项目,如何用Git进行代码版本控制呢?我们可以自己…

pci串口驱动安装失败_TSC TTP-243E Pluse装LTP并口驱动无法安装
一、前言描述接到客户报修说,电脑无法开机,即到哥上门维修立即安排人员到现场查看原因,到现场后,查看的确是电脑系统问题,重新安装系统,安装完成系统后,发现打印机无法使用。这个打印机型号是TS…

PHP中阶,PHP进阶
PHP功能的强大首先在于它的大量的内置函数库,它可以让初学者也能执行许多复杂的任务,而不必安装新的库和关心底层的详细情况,而这恰恰是其它流行的诸如Perl这样的客户端语言所不具备的。由于这个教程的限制,我们仅仅学习了一些与M…

安卓手机格式化怎么弄_安卓手机无法启动如何进行格式化
当我们在使用安卓智能手机的时候,由于使用错误或者出现的各种问题导致手机无法重启,相信你一定会感到很烦恼!而如果手机混乱到无法启动,格式化是一个不错的尝试方法!下面给大家介绍手机格式化的方法和注意事项…

位域 内存 字节序_JS操作内存?二进制数组了解一下
二进制数组的由来主要是为了提高浏览器与显卡之间的通信效率,由二进制数据代替传统的文本。二进制数组主要有三个对象:ArrayBufferTypedArrayDataViewArrayBuffer对象ArrayBuffer是一个构造函数,参数是一个数字,代表索取多少个字节…

求排列的逆序数(分治)
考虑1,2,…,n (n < 100000)的排列i1,i2,…,in,如果其中存在j,k,满足 j < k 且 ij > ik, 那么就称(ij,ik)是这个排列的一个逆序。 一个排列含有逆序的个数称为这个排列的逆序数。例如排列 263451 含…

mysql 查看当前事务id,MySQL 如何查询当前最新事务ID
写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时长等用途)。通常地,我们有两种方法可以查看当前的事务 ID:1、执行 SHOW ENGIN…

password
pwdText wx.TextCtrl(panel, -1, ”password”, size(175, -1), stylewx.TE_PASSWORD)转载于:https://www.cnblogs.com/chengxuyuan326260/p/6364695.html

java 自带thread分析工具_java自带的jvm分析工具
这段时间觉得很有必要对java的内存分析工具进行熟悉,这样以后出现机器负载较高,或者反应很慢的时候,我就可以查找原因了。上网搜了搜,发现下面这些是比较常用的,然后我在机器上试试了,把结果也贴出来哈。1.…

Python笔记:字典的fromkeys方法创建的初始value同内存地址问题
dict中的fromkeys()函数可以通过一个list来创建一个用同一初始value的dict。 1 d dict.fromkeys(["苹果", "菠萝"], [apple, pineapple]) 2 print(d) 3 d.get("苹果").append(orange) 4 print(d){苹果: [apple, pineapple], 菠萝: [apple, pine…

表格下划线怎么加粗_这招高!Excel签名栏的下划线随列宽变化,是不是感觉牛哄哄的?...
职场牛人的世界总有各种高招,随手蹦出,令人赞叹不已!今天早上去填一个表格,在输入签名时,突然发现签名处的下划线是随着列宽的变化而自动变化,这绝对是动态的,这是怎么做到的呢?我特…

JS高级程序设计拾遗
《JavaScript高级程序设计(第三版)》反反复复看了好多遍了,这次复习作为2017年上半年的最后一次,将所有模糊的、记不清的地方记录下来,方便以后巩固。 0. <script>元素属性 async表示立即下载脚本,但…

mysql建立高效索引,如何知道你建立的MySQL索引是高效,合理的
不管是开发人员,仍是数据库维护人员,给表建立索引是很常见的事情。普通到什么程度,初级,中级开发人员的印象中,只要写的sql语句效率不高,第一反应就是建索引,而无论这个字段是否适合建立索引。反…

32位java 最大内存_【答疑系列】为什么32位系统只支持最大4G内存?
这个问题一直都有同学问到,算是提问次数最多的问题之一了。32位是什么现在主流的操作系统都是64位的,早期存在32位操作系统,相信大家也都有所听闻,其实,在更早之前,还有16位、8位的,这里就不展开…

新手C#string类常用函数的学习2018.08.04
ToLower()用于将字符串变为小写,注意字符串的不可变特性,需要重新赋值给另一个字符串变量。 s s.ToLower();//字符串具有不可变性,转换后需要重新赋值,不可仅有s.ToLower(); 这可以使用户的输入不区分大小写,例如验证…

开始使用博客了,改变从这里开始。
开始使用博客了,改变从这里开始。 开始使用博客了,改变从这里开始。 开始使用博客了,改变从这里开始。转载于:https://www.cnblogs.com/hello001/p/6367259.html

php 贝瑟尔曲线,贝塞尔曲线的应用详解
简介贝塞尔曲线是可以做出很多复杂的效果来的,比如弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速的效果。使用贝塞尔曲线常用的两个网址如下:缓动函数:cubic-bezier:如何用贝塞尔…

区别 eks_sport 和 exercise 有什么区别?看完你就清楚了!
说到“运动”sport 这个单词应该是不少人看到“运动”的第一反应吧sport /spɔ:t/ n.体育运动例如:Id say football is my favourite sport.我最喜欢的运动要数足球了。习语:be a sport 讲交情例如:Shes a good sport.她很讲交情。sport通常指…

java gps时间转换工具_java 时间戳和时间互转工具 和 时间偏移量计算
时间互转代码片段:* 时间戳 转 时间 ** param beginDate* return* see [类、类#方法、类#成员]*/public static String timeStampToTime(String beginDate){SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date new Date(Long…

tcp 状态转换.
命令行:rootubuntu:/home/linson# netstat -apt | grep 3030 server,listen 服务端根据端口生成一个socket.用于监听连接.也就是监听3次握手,当3次握手成功,建立一个连接接放入队列中. 也就是说执行了listen,会自动应答3次握手,如果不执行listen,没有api会帮你处理3次握手. 所以…

增加、修改、删除
第一;,models.py建表 from django.db import models# Create your models here.class Book(models.Model): #必须继承models.Model这个类,jango才能识别Book是一张表namemodels.CharField(max_length20)#charfield字符串类型,长度20#pricemodels.FloatFi…

java ee 笔试题目,JSP经典笔试@题目(含答案)
JSP经典笔试题目(含答案)更新时间:2017/2/5 19:25:00 浏览量:557 手机版JSP综合测试笔试1)在Java EE中,Servlet是在服务器端运行,以处理客户端请求而做出的响应的程序,下列选项中属于Servlet生命周期阶段的是( )A.加…

句法依存分析_[NLP学习笔记]句法分析
句法分析任务简介成分句法分析(Constituency Parsing):分析句子的成分,给出一棵树由终结符和非终结符构成的句法树。依存句法分析(Dependency Parsing):分析句子中词与词之间的依存关系…

modifiers在JAVA中_Java Modifier.classModifiers方法代碼示例
import java.lang.reflect.Modifier; //導入方法依賴的package包/類/*** Returns a string describing this {code Class}, including* information about modifiers and type parameters.** The string is formatted as a list of type modifiers, if any,* followed by the k…

华为笔试题---明明的随机数
题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不…

扩展城市信道etu模型matlab仿真,LTE System Toolbox:无线通信系统的仿真、分析和测试...
LTE System Toolbox 提供用于设计、仿真和验证 LTE 和 LTE-Advanced 通信系统且符合标准的函数和应用程序。该系统工具箱加速了 LTE 算法和物理层 (PHY) 部署,支持黄金参考验证和一致性测试,并能够生成测试波形。借助该系统工具箱,您可以配置…
i/o多路复用笔记
1、用户空间和内核空间 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也可以访问底层硬件设备。为了保护用户进程不能直接操作内核,保证内核的安全,操作系统将虚拟空间划分为两部分࿰…

接口有个电池标志_USB接口上的小标签有啥用?从“+”号到闪电的奥秘
你有注意过自己PC,尤其是笔记本USB接口上面的小符号了吗?从“”号到闪电,小狮子前几天移动硬盘接驳始终没反应的时候,各种切换完毕发现这似乎是一个平时很少注意的细节啊……从“”号开始谈起仔细端详PC USB接口的时候会发现&…

java arraylist优点_Java中各种集合的特点总结
1:集合:(1) Collection(单列集合)List(有序,可重复)ArrayList底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList底层数据结构是链表,查询慢,增删快线程不安全,效率高Set(无序,唯一)HashSet底层数…