电子发烧友网 > 控制/MCU > 正文

基于STM32的串口DMA发送

2018年06月08日 08:13 次阅读

问题描述

使用STM32的串口进行DMA发送(Noraml模式),在某个任务中连续调用两次发送函数log_printf(),但是发回的数据在串口调试助手上显示与预期不符。第一次发送的数据有一部分被第二次发送的数据覆盖,如图所示:

基于STM32的串口DMA发送

任务代码如下:

/* Log_Task funcTIon */void Log_Task(void const * argument)

{ /* USER CODE BEGIN Log_Task */

/* Infinite loop */

for(;;)

{ if(router_rx_flag == 1)

{

router_rx_flag = 0;

log_printf(“Get ok\r\n”);

log_printf(“%s”,router_rx_buffer);

}

osDelay(100);

} /* USER CODE END Log_Task */}1234567891011121314151617

从代码中可以看出,期望的结果应该是下图这样:

基于STM32的串口DMA发送

log_printf函数代码如下:

/*

* 名称: log_printf

* 功能: 在串口1上打印出日志内容

* 输入: 格式化输出的字符串

* 输出: 无

*/

void log_printf(const char *format ,。。。 )

{

va_list arg;

staTIc char tx_buffer[256]={“”};

//把数据处理后放进缓冲区

va_start(arg, format);

vsprintf((char *)tx_buffer, format, arg);

va_end(arg);

//开始发送数据

send_to_router((u8 *)tx_buffer,strlen(tx_buffer));

}

send_to_router函数代码如下:

void send_to_router(unsigned char *buffer,unsigned int length)

{

//等待上一次的数据发送完毕

while(HAL_DMA_GetState(&hdma_usart1_tx) == HAL_DMA_STATE_BUSY) osDelay(1);

/* 关闭DMA */

__HAL_DMA_DISABLE(&hdma_usart1_tx);

//开始发送数据

HAL_UART_Transmit_DMA(&huart1,buffer,length);

// while(HAL_DMA_GetState(&hdma_usart1_tx) == HAL_DMA_STATE_BUSY) osDelay(1); /* 放在此处可以保证每次发送完全,但会占用时间 */

}

串口中断接收处理函数如下:

/*

* 名称: router_parse

* 功能: 接收路由器数据的解析,在回调函数中调用

* 输入: 空闲中断时串口1接收的数据长度

* 输出: 无

*/

void router_parse(uint16_t buffer_len)

{

char *p_start = NULL,*p_end = NULL;

/* 只提取一帧NMEA数据,$开头,\n结尾 */

p_start = strchr(usart1_rx_buffer,‘$’);

if(p_start != NULL)

{

p_end = strchr(p_start,‘\n’);

if(p_end != NULL)

{

memcpy(router_rx_buffer, p_start, (p_end - p_start + 1)); /* 保存数据 */

router_rx_flag = 1;

}

}

}

分析过程

以前一直以为是send_to_router函数中的

//等待上一次的数据发送完毕

while(HAL_DMA_GetState(&hdma_usart1_tx) == HAL_DMA_STATE_BUSY) osDelay(1);

这一句的问题,即由于某种原因导致DMA缓存中数据未发送完全,但DMA状态却被释放了,结果重新开始了新一轮的发送,导致上次数据的后半部分被覆盖。但无论如何调试,都无法证实这个猜想,DMA外设没有出过任何异常。

今天仔细观察了一下,“Getckey”和“Get ok\r\n”和”$Mickey\r\n“,为什是第二次发送的内容的后半部覆盖了第一次发送的内容,一般不应该是前半部分”(美元符号,此处会排版出错)Mic”吗?问题的原因可能与状态位无关。于是我再审视了一下send_to_router函数:void send_to_router(unsigned char *buffer,unsigned int length)突然间想到,入参只是一个指针,发送缓存区在log_printf函数中

staTIc char tx_buffer[256]={“”};

整理一下,整个发送过程流程如下:

log_printf(“Get ok\r\n”);时,“Get ok\r\n”被装进了tx_buffer,附带一个发送长度8字节。

send_to_router函数中,HAL_UART_Transmit_DMA(&huart1,buffer,length);开启了这个8个字节的发送。

8个字节可能只完成了“Get”的发送, log_printf(“%s”,router_rx_buffer);(即log_printf(“$Mickey\r\n“);)已经开始执行。

”$Mickey\r\n“被装进tx_buffer,附带一个发送长度9字节。

send_to_router函数中,因为上一次数据还没有发送完全,进入DMA状态等待循环。但是DMA发送指针char *buffer原本指向的那个地址的内容” ok\r\n“已经被”ckey\r\n“代替,所以就变成了”Getckey\r“。由于显示原因,只看到”Getckey“。

解决办法

把while(HAL_DMA_GetState(&hdma_usart1_tx) == HAL_DMA_STATE_BUSY) osDelay(1);这一句放到缓存区tx_buffer装载步骤之前即可:

/*

* 名称: log_printf

* 功能: 在串口1上打印出日志内容

* 输入: 格式化输出的字符串

* 输出: 无

*/

void log_printf(const char *format ,。。。 )

{

va_list arg;

staTIc char tx_buffer[256]={“”};

//等待上一次的数据发送完毕

while(HAL_DMA_GetState(&hdma_usart1_tx) == HAL_DMA_STATE_BUSY) osDelay(1);

//把数据处理后放进缓冲区

va_start(arg, format);

vsprintf((char *)tx_buffer, format, arg);

va_end(arg);

//开始发送数据

send_to_router((u8 *)tx_buffer,strlen(tx_buffer));

}

至于send_to_router函数中的该代码,保留或删除都可以。

后言

很久以前就开始使用STM32的DMA串口发送功能,套路基本上就是曾经的博文《iar中使用DMA+printf+uart1》所描述的那样。后来开始用STM32CubeMX了,把之前的例程稍微做了一些修改,调试成功之后,就一直沿用至今。期间,这个问题困扰了我很久,虽然在写代码时稍微注意一下就可避免其发生,但做技术的人都明白:千里之堤,溃于蝼蚁,放过任何一个小细节都可能在将来引发重大灾难。很庆幸今天能够找到问题的原因。

再回去看来一遍《iar中使用DMA+printf+uart1》,其实这个问题的答案很早就写在里面了。。。

找个时间,我会专门写一篇使用DMA串口Normal模式发送的博文,还是以Cube来创建工程。届时,再用一个例程完整复现和解决这个问题。

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

基于STM32的Uart2串口问题

21IC买了一块1元的活动板子,移植了RTT(RT-THREAD)的国人嵌入式操作系统.系统能够正常...

发表于 2018-06-08 08:30 14次阅读
基于STM32的Uart2串口问题

STM32 UART2发送后中断的原因是什么?

先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为“发送后中...

发表于 2018-06-07 08:07 31次阅读
STM32 UART2发送后中断的原因是什么?

由stm32产生的频率分别为10khz和30khz的方波,请问如何经过滤波处理产生频率不变?

发表于 2018-06-06 18:37 39次阅读
由stm32产生的频率分别为10khz和30khz的方波,请问如何经过滤波处理产生频率不变?

CC253X系列Z——请问SATCK协议栈中怎么做串口命令?

发表于 2018-06-06 13:24 109次阅读
CC253X系列Z——请问SATCK协议栈中怎么做串口命令?

TI的串口正在接收数据,请问在主线程里发送数据会有什么问题吗?

发表于 2018-06-06 10:42 52次阅读
TI的串口正在接收数据,请问在主线程里发送数据会有什么问题吗?

请问如何增加CC1310串口数量?应该如何操作呢?

发表于 2018-06-06 09:47 27次阅读
请问如何增加CC1310串口数量?应该如何操作呢?

请问串口启动后,发送0x41aa08,返回0x41aa08,然后再烧写hex文件可以吗?

发表于 2018-06-06 04:20 17次阅读
请问串口启动后,发送0x41aa08,返回0x41aa08,然后再烧写hex文件可以吗?

想开发28035串口烧写程序,请问能不能给提供资料?

发表于 2018-06-06 00:35 15次阅读
想开发28035串口烧写程序,请问能不能给提供资料?

关于方波转正弦波,请问如何经过滤波处理产生频率不变,峰峰值分别为6V和2V的无明显失真的正弦波信号?

发表于 2018-06-05 23:08 109次阅读
关于方波转正弦波,请问如何经过滤波处理产生频率不变,峰峰值分别为6V和2V的无明显失真的正弦波信号?

labview 的基于visa 串口通信运行一次关闭后不能再运行,请问 是什么原因?

发表于 2018-06-05 21:31 135次阅读
labview 的基于visa 串口通信运行一次关闭后不能再运行,请问 是什么原因?

nand flash 擦除、页编程、页读取(调用readpage函数读取出的全是FF是怎么回事?)

发表于 2018-06-05 10:16 247次阅读
nand flash 擦除、页编程、页读取(调用readpage函数读取出的全是FF是怎么回事?)

ST/GD/Microchip 型号如何命名

发表于 2018-06-04 18:24 69次阅读
ST/GD/Microchip 型号如何命名

教你怎么用Atollic TrueStudio ...

ST之前发布了Atollic TrueStudio 9.0版本软件开发工具,为STM32用户提供全免...

发表于 2018-06-04 09:40 1415次阅读
教你怎么用Atollic TrueStudio ...

三种串口接受不定长数据方法详解

DMA接受+IDLE中断 实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使...

发表于 2018-06-03 04:15 297次阅读
三种串口接受不定长数据方法详解

通过CAN_BTR寄存器控制LBKM和SILM

每组过滤器组必须关联且只能关联一个 FIFO。复位默认都关联到 FIFO_0。所谓“关联”是指假如收...

发表于 2018-05-31 08:54 941次阅读
通过CAN_BTR寄存器控制LBKM和SILM

基于STM32F103系列单片机的无线解说器

本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解...

发表于 2018-05-25 10:00 1360次阅读
基于STM32F103系列单片机的无线解说器

STM32的三种串口通信协议介绍

本文首先介绍了STM32串口硬件电路及串口编程,其次介绍了STM32的三种串口通信协议,最后介绍了S...

发表于 2018-05-25 09:33 1435次阅读
STM32的三种串口通信协议介绍

基于北斗卫星系统的机载高速摄像机时间同步器

在民用飞机飞行试验中,为了保证图像测试数据的准确可靠,机上图像测试系统中不同测试设备时间需要严格的统...

发表于 2018-05-25 08:24 585次阅读
基于北斗卫星系统的机载高速摄像机时间同步器

基于STM32的语音导览系统的设计方案

景点语音导览主要有以下几种方式:一种是通过全球定位系统(GPS)的用户终端接收工作卫星的导航信息,从...

发表于 2018-05-25 08:01 1240次阅读
基于STM32的语音导览系统的设计方案

基于STM32C8T6的四旋翼飞行器控制系统硬...

本文基于四旋翼飞行器的工作原理和性能特点,设计了飞行器控制系统的硬件电路。系统包含微控制器模块、姿态...

发表于 2018-05-24 16:37 1808次阅读
 基于STM32C8T6的四旋翼飞行器控制系统硬...

详细putty串口使用教程与八大使用技巧分享

本文首先介绍了putty的概念及优点,其次详细介绍了PuTTY安装及使用教程,最后阐述了putty八...

发表于 2018-05-23 10:09 625次阅读
详细putty串口使用教程与八大使用技巧分享

STM32的优势在哪里?如何使用DMA来进行AD...

STM32的优点在哪里? 除去宣传环节,细细分析。 STM32时钟不算快,72MHZ, 也不能扩展...

发表于 2018-05-22 07:32 262次阅读
STM32的优势在哪里?如何使用DMA来进行AD...

STM32串口实现485双机通信的原理

如果按键按下了,就会发送数据,就会产生接收中断,就会往我们定义的接收缓冲区(RS485_RX_BUF...

发表于 2018-05-21 17:27 730次阅读
STM32串口实现485双机通信的原理

ad7606与stm32连接电路介绍

本文首先对stm32产品概述及特性进行了介绍,其次介绍了AD7606相关概念,最后介绍了ad7606...

发表于 2018-05-21 11:45 328次阅读
ad7606与stm32连接电路介绍

一文看懂串口WiFi模块应用

在刚结束不久的百度世界大会上,相信有很多小伙伴一样有关注到再次高调亮相的百度共享WiFi翻译机。一键...

发表于 2018-05-20 10:55 1004次阅读
一文看懂串口WiFi模块应用

一文了解STM32窗口看门狗的真正作用

STM32有2个看门狗:独立看门狗和窗口看门狗。 独立看门狗IWDG--独立于系统之外,因为有独立...

发表于 2018-05-20 10:17 628次阅读
一文了解STM32窗口看门狗的真正作用

如何判断STM32的复位类型_STM32软件复位...

上电复位,是为了为程序的开始作好准备,强制的所有的数据清零,它必须要从零开始。

发表于 2018-05-20 10:06 656次阅读
如何判断STM32的复位类型_STM32软件复位...

STM32F0多路ADC采样中的BUG和解决方案

使用CUBE生产的ADC无法配置多路采样,多路采样采集值不对,研究后发现是底层函数没有将CHANNE...

发表于 2018-05-18 15:01 144次阅读
STM32F0多路ADC采样中的BUG和解决方案

一文解析stm32产生spwm原理及程序

SPWM(Sinusoidal PWM)法是一种比较成熟的,目前使用较广泛的PWM法。SPWM法就是...

发表于 2018-05-18 09:11 2517次阅读
一文解析stm32产生spwm原理及程序

stm32休眠_RTC定时唤醒来喂狗

在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起...

发表于 2018-05-18 01:56 144次阅读
stm32休眠_RTC定时唤醒来喂狗

STM32独立看门狗和低功耗模式_RTC定时唤醒...

在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起...

发表于 2018-05-18 01:55 118次阅读
STM32独立看门狗和低功耗模式_RTC定时唤醒...

STM32独立看门狗介绍_STM32单片机独立看...

STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要...

发表于 2018-05-18 01:49 122次阅读
STM32独立看门狗介绍_STM32单片机独立看...

基于STM32内置ADC实现简易示波器的程序设计...

ADC转换:STM32增强型芯片内置的2个独立ADC,可以有16个通道,并且2个通道可以并行的同步采...

发表于 2018-05-18 01:44 359次阅读
基于STM32内置ADC实现简易示波器的程序设计...

STM32单片机的模拟看门狗的库函数设置

ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LT...

发表于 2018-05-18 01:29 86次阅读
STM32单片机的模拟看门狗的库函数设置

一文看懂stm32的引脚的两种用途:GPIO和A...

stm32的引脚有两种用途:GPIO(generalpurposeio)和AFIO(alternat...

发表于 2018-05-18 01:22 226次阅读
一文看懂stm32的引脚的两种用途:GPIO和A...

STM32的ADC简介_DMA方式的程序设计与实...

ADC(Analog-to-Digital Converter,模/ 数转换器)。也就是将模拟信号...

发表于 2018-05-18 01:12 268次阅读
STM32的ADC简介_DMA方式的程序设计与实...

一文读懂STM32之独立看门狗/窗口看门狗的原理

STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即主时钟发生故障,它也仍然有效,这里我们需...

发表于 2018-05-18 01:06 103次阅读
一文读懂STM32之独立看门狗/窗口看门狗的原理

ST MCU的生态系统:物联网催生新服务 STM...

生态系统原意是指在一定的地域内,生物与环境形成的统一的整体。随着经济社会的发展,现在我们提到生态系统...

发表于 2018-05-17 17:16 708次阅读
ST MCU的生态系统:物联网催生新服务 STM...

串口有哪几种?具体的功能及电路介绍

本文首先阐述了串口的概念及串行端口的数据传输,其次介绍了串口三大分类及功能,最后介绍了RS-232、...

发表于 2018-05-17 15:29 453次阅读
串口有哪几种?具体的功能及电路介绍

主板串口RS232芯片烧毁问题分析(RS232作...

本文首先介绍了rs232电气特性及缺陷,其次介绍了RS232典型应用电路与RS232串行通信电路,最...

发表于 2018-05-17 14:34 498次阅读
主板串口RS232芯片烧毁问题分析(RS232作...

窗口看门狗的作用是什么?窗口看门狗复位分析

程序初始化LED点亮延时300ms熄灭,窗口看门狗从0x7F开始递减计数,上窗口为0x5F,下窗口为...

发表于 2018-05-17 13:54 178次阅读
窗口看门狗的作用是什么?窗口看门狗复位分析

STM32看门狗WWDG和IWDG的区别是什么

STM32有2个看门狗:独立看门狗和窗口看门狗。 独立看门狗IWDG:独立于系统之外,因为有独立时...

发表于 2018-05-17 13:51 83次阅读
STM32看门狗WWDG和IWDG的区别是什么

stm32驱动ad9854程序分享_ad9854...

AD9854数字合成器是高集成度的器件。本文首先介绍了ad9854优势和特点,其次介绍了ad9854...

发表于 2018-05-17 09:23 521次阅读
stm32驱动ad9854程序分享_ad9854...

STM32调试步骤

调试前,首先跳线J9的2-3脚短接,跳线J4的右边两个脚短接,跳线J5短接,J8短接,J2的1-2短...

发表于 2018-05-16 10:42 683次阅读
STM32调试步骤

了解TrueSTUDIO9.0给STM32开发带...

现在ST正式发布整合后第一个Atollic TrueSTUDIO版本 9.0,正式为STM32用户提...

发表于 2018-05-16 09:24 1257次阅读
了解TrueSTUDIO9.0给STM32开发带...

AVRNET源码并移植STM32 ARP和Eth...

eth_generate_header函数实现了填充以太网首部的功能,第一个输入参数为发送接收缓冲区...

发表于 2018-05-15 09:15 217次阅读
AVRNET源码并移植STM32 ARP和Eth...

STM32中的位带(bit-band)操作

位带别名区的字只有 LSB 有意义。另外,在访问位带别名区时,不管使用哪一种长度的数据传送指令(字/...

发表于 2018-05-13 09:28 382次阅读
STM32中的位带(bit-band)操作

usb转ttl电路图大全(RS232/串口/CH...

本文主要介绍了usb转ttl电路图大全(RS232/串口/CH340T/PL2303)。TXD:发送...

发表于 2018-05-11 17:37 1264次阅读
usb转ttl电路图大全(RS232/串口/CH...

汉枫HF-LPB100模块进行串口模式烧写流程

串口配置协议为Serial,端口为上述2.4.1中的COM口,波特率设置为115200(关键),数据...

发表于 2018-05-11 16:27 606次阅读
汉枫HF-LPB100模块进行串口模式烧写流程

汉枫HF-LPT120模块进行串口模式烧写流程

当串口连接成功之后,将HF-LPT120进行复位(按下2.3节原理图所示的KEY1后松开)或者给模块...

发表于 2018-05-11 16:25 791次阅读
汉枫HF-LPT120模块进行串口模式烧写流程

STM32单片机的串口通信波特率计算方法

不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传...

发表于 2018-05-10 11:49 884次阅读
STM32单片机的串口通信波特率计算方法

全球MCU市场1/5归ST,中国CAGR达27%

【导读】ST通用STM32 MCU斩获全球1/5市场份额,中国市场2017年MCU出货量排名第二,连...

发表于 2018-05-10 11:10 844次阅读
全球MCU市场1/5归ST,中国CAGR达27%

STM32之RS485通讯方式实现

在设计中,我们经常使用一个名为Max485的芯片来完成TTL电平至差分电平的转换,这款芯片有一个DE...

发表于 2018-05-10 06:31 276次阅读
STM32之RS485通讯方式实现

关于STM32配置中断和GPIO针脚问题

嵌入式软体搭配最新版的STM32CubeMX个人电 脑开发 工具使用, 设计人员 可在绘图介面向导内...

发表于 2018-05-10 02:41 293次阅读
关于STM32配置中断和GPIO针脚问题

STM32之软件CRC和硬件CRC速度测试

软件提前生成CRC表,用于查询。分别使用软件CRC算法和硬件CRC外设对一个缓存进行计算,目的是从该...

发表于 2018-05-09 11:45 140次阅读
STM32之软件CRC和硬件CRC速度测试

STM32F407V芯片断电的时候FLASH被异...

到此,我们一方面请芯片设计人员做进一步确认,看看芯片是否真的坏了。同时,我们抱着怀疑一切的态度,请客...

发表于 2018-05-09 09:13 893次阅读
STM32F407V芯片断电的时候FLASH被异...

STM32如何通过 printf 打印出浮点数

这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使...

发表于 2018-05-07 16:47 135次阅读
STM32如何通过 printf 打印出浮点数

ST公司STM32F334x4/6/8系列MCU...

ST公司的stm32F334x4/6/8系列MCU是基于高性能ARM 32位CortexR-M4 R...

发表于 2018-05-05 14:07 227次阅读
ST公司STM32F334x4/6/8系列MCU...

STM32之 IP ICMP ETHERNET的...

嵌入式以太网开发是一个很有挑战性的工作。通过几个月的学习,个人觉得大致有两条途径。第一条途径,通过高...

发表于 2018-05-03 12:13 121次阅读
STM32之 IP ICMP ETHERNET的...

浅谈STM32的FSMC的TFT笔记

FSMC _Bank 用来选择外接存储器的地址,FSMC所控制的外存储器所映射的地址是0x6000 ...

发表于 2018-05-03 11:58 144次阅读
浅谈STM32的FSMC的TFT笔记

详解stm32的CAN控制器(程序分享)

首先简单介绍一下CAN总线,关于CAN总线是谁发明的,CAN总线的历史,CAN总线的发展,CAN总线...

发表于 2018-05-01 10:44 457次阅读
详解stm32的CAN控制器(程序分享)

基于STM32定时器的红外遥控数据接收设计原理

定时器就是按照一个特定的频率对计数值进行加一或减一操作,当数值溢出时则产生一个标志或中断。 定时器...

发表于 2018-04-30 17:52 258次阅读
基于STM32定时器的红外遥控数据接收设计原理

STM32开发板实验箱8位独立按键测试学习

1、畅学STM32核心板2、 配套STM32主芯片 F103C8T6STM32F103C8T6芯片基...

发表于 2018-04-30 15:21 684次阅读
STM32开发板实验箱8位独立按键测试学习

一文解析STM32内存管理和堆栈的认知与理解

本文主要介绍了STM32内存管理和堆栈的认知与理解,首先介绍的是内存管理的实现原理及分配、释放原理,...

发表于 2018-04-26 16:22 875次阅读
一文解析STM32内存管理和堆栈的认知与理解

关于stm32跑马灯的程序

stm32的寄存器比较多,难于记忆,所以官方封装了两套库函数。一个是标准库,不过在F7上官方没有更...

发表于 2018-04-26 11:08 431次阅读
关于stm32跑马灯的程序

STM32程序之MAX6675热电偶温度读取

用HAL很简单,CS拉低以后,一个SPI读两个字节进来,然后就是凑成12位,换算。 MAX6675...

发表于 2018-04-26 11:04 269次阅读
STM32程序之MAX6675热电偶温度读取

MDK将数据存储到FLASH指定地址

学习 STM32 也会遇到这样的 绝对定位 的问题如下: uint8_t UART_RX_BUF[1...

发表于 2018-04-26 11:02 149次阅读
MDK将数据存储到FLASH指定地址

STM32开发设计中FSMC可能遇到问题应对方案

为了使 HADDR 的字节地址信号线与存储器匹配,FSMC 的 25 条地址信号线FSMC_A[24...

发表于 2018-04-26 09:23 1449次阅读
STM32开发设计中FSMC可能遇到问题应对方案

STM32F4 C++ 封装库 之 EXTI

mbed 框架是为物联网设备开发的,工业控制级别的产品可以考虑用 RTE 框架。RTE 框架目前驱动...

发表于 2018-04-24 18:10 171次阅读
STM32F4 C++ 封装库 之 EXTI

STM32开发何使用STVP后就无法正常工作了

STM8家族中有些系列是支持最高 24MHz 主频的,比如 STM8S207、STM8AF52,等等...

发表于 2018-04-24 08:47 883次阅读
STM32开发何使用STVP后就无法正常工作了

FSMC如何读写CPLD

STM32 通过 FSMC 读写CPLD 的程序,CPLD挂在STM32的地址线和数据线上,将CPL...

发表于 2018-04-20 10:38 133次阅读
FSMC如何读写CPLD

stm32之.hex 文件

我们先来详细分析“方法一”的操作: 1.我们设置编译 程序的编译器(如图),这个设置意思是把程序下载...

发表于 2018-04-20 09:28 163次阅读
stm32之.hex 文件

STM32知识:什么是SYSTICK 作用是什么

什么是 SYSTICK : 这是一个24位的系统节拍定时器system tick timer,Sys...

发表于 2018-04-20 08:50 125次阅读
STM32知识:什么是SYSTICK 作用是什么

意法半导体:让云智能功能出现在物联网设备上

意法半导体的X-CUBE-AVS软件包让亚马逊的Alexa语音服务(AVS)能够运行在STM32* ...

发表于 2018-04-20 08:32 324次阅读
意法半导体:让云智能功能出现在物联网设备上

STM32之FSMC驱动LCD屏应用

FSMC其实就是把芯片内部的数据总线和地址总线引出来了,其实51单片机也是有这个总线外接的。没有说把...

发表于 2018-04-20 08:32 213次阅读
STM32之FSMC驱动LCD屏应用

STM32Note初识单片机(2)

在了解X86和ARM架构之前,我们先介绍下复杂指令集CISC(Complex Instuction ...

发表于 2018-04-19 13:43 98次阅读
STM32Note初识单片机(2)

带你一步步了解STM32启动代码

对于熟悉电脑的伙伴们来说,BIOS(那个蓝色的界面)可能不会太陌生吧,这货就是电脑的 启动代码 。没...

发表于 2018-04-19 13:40 1258次阅读
带你一步步了解STM32启动代码

STM32中GPIO的这八种配置种类你知道几种?

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,...

发表于 2018-04-19 13:36 1537次阅读
STM32中GPIO的这八种配置种类你知道几种?

STM32接口中FSMC/FMC难点问题理解

FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32...

发表于 2018-04-19 12:36 847次阅读
STM32接口中FSMC/FMC难点问题理解

RS232、RS485、RS422、串口与握手基...

本文开始阐述了RS232和RS485及RS422相关的基础知识,其次介绍了RS232和RS485及R...

发表于 2018-04-19 10:29 932次阅读
RS232、RS485、RS422、串口与握手基...

STM32如何实现W25X16的汉字字库存储

系统中使用过多的汉字会出现芯片容量不够用的问题,可将数据存储在 外部FLASH 中,在需要使用时进...

发表于 2018-04-17 12:38 298次阅读
STM32如何实现W25X16的汉字字库存储

使用STM32测量频率和占空比的几种方法

一般的高端示波器,测量频率即是这种方法。简而言之,高速采样一系列数据,然后通过频谱分析(例如快速傅里...

发表于 2018-04-16 16:19 993次阅读
使用STM32测量频率和占空比的几种方法

一文看懂STM32单片机和51单片机区别

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序...

发表于 2018-04-13 17:47 7093次阅读
一文看懂STM32单片机和51单片机区别

stm32与pic单片机比较_哪个好

本文首先介绍了stm32单片机的特性及优缺点,其次介绍了pic单片机的特点及不足,最后阐述了stm3...

发表于 2018-04-13 16:52 857次阅读
stm32与pic单片机比较_哪个好

STM32L496AGI6及P-L496G-CE...

ST公司的STM32L496AGI6是基于高性能Arm® Cortex®-M4 32-位RISC核的...

发表于 2018-04-12 05:07 209次阅读
STM32L496AGI6及P-L496G-CE...

成熟的设计还在用三极管是原因!

这周检查水泵变频器的电路,定稿用,发现数码管的控制三极管,基极竟然没有串联电阻,这会导致单片机的IO...

发表于 2018-04-11 17:21 1192次阅读
成熟的设计还在用三极管是原因!

PCI总线的三种传输模式

PIO在早期的PC中被广泛使用,因外当时的处理器的速度要远远大于任何其他外设的速度,所以PIO足以胜...

发表于 2018-04-10 09:14 706次阅读
PCI总线的三种传输模式

STM32Note初识单片机

本连载将以STM32F103为例为学习嵌入式系统开发搭建一个基础知识框架。 初识单片机系列将会介绍单...

发表于 2018-04-08 10:00 128次阅读
STM32Note初识单片机

基于STM32芯片的一款智能台灯

随着现代科学技术的不断发展,生活用品的智能化程度也越来越普及,人们对一些家居物品的人性化、智能化设计...

发表于 2018-04-08 08:48 3342次阅读
基于STM32芯片的一款智能台灯

基于STM32的家庭服务机器人系统工作原理及设计

为解决当前大部分家庭服务机器人不具备行走功能或只具有简单的避障能力等问题,本文设计一种基于STM32...

发表于 2018-04-06 08:26 973次阅读
基于STM32的家庭服务机器人系统工作原理及设计

基于STM32的伺服压力机控制系统设计

伺服压力机的基本结构及对控制系统的要求与传统压力机比较,伺服压力机取消了原有压力机的飞轮和离合器,保...

发表于 2018-04-06 08:07 912次阅读
基于STM32的伺服压力机控制系统设计

STM32的串口中断配置

STM32的串口中断配置,也是很简单的. 首先是配置UART的GPIO口 首先是配置UART的GPI...

发表于 2018-04-06 07:24 643次阅读
STM32的串口中断配置

基于STM32单片机的DLP1700显示电路、光...

传统的数字微镜显示技术的信号输入端是由DVI接口提供图像信号和行场同步信号,由MSP430单片机对D...

发表于 2018-04-06 02:58 1066次阅读
基于STM32单片机的DLP1700显示电路、光...

Alexa语音服务软件扩展STM32Cube

X-CUBE-AVS扩展套件包含一组用于STM32F7系列微控制器的库和应用示例,充当支持Alexa...

发表于 2018-04-03 13:41 2878次阅读
Alexa语音服务软件扩展STM32Cube

STM32单片机--PWM输出

采用定时器2的通道2,使PA1输出频率1K,占空比40的PWM波形,用PA8随意延时取反led灯,指...

发表于 2018-04-03 08:54 745次阅读
STM32单片机--PWM输出

单片机STM32时钟图文理解

如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FS...

发表于 2018-04-03 08:45 906次阅读
单片机STM32时钟图文理解

RT-Thread Nano 3.0.3 的基本...

RT-Thread是一个高度可配置的嵌入式实时操作系统,配置文件是rtconfig.h。Nano就是...

发表于 2018-04-02 15:58 806次阅读
RT-Thread Nano 3.0.3 的基本...

usb接口类型有哪些_usb接口类型大全

本文主要介绍了usb接口类型有哪些_usb接口类型大全。usb是连接计算机系统与外部设备的一种串口总...

发表于 2018-04-02 15:34 1167次阅读
usb接口类型有哪些_usb接口类型大全

STM32三种BOOT模式介绍

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了...

发表于 2018-03-30 16:09 1147次阅读
STM32三种BOOT模式介绍

STM32_IAP详解(有代码,有上位机)

 和app中分别放置两套中断向量表,当iap代码中将app烧写到flash中之后,跳转到app的中断...

发表于 2018-03-30 15:58 664次阅读
STM32_IAP详解(有代码,有上位机)