stm32
文章平均质量分 59
小熊@XiaoXiong
这个作者很懒,什么都没留下…
展开
-
stm32f091rc 使用 rt-thread时UART串口的阻塞问题
1. 问题描述在项目中用到了两个串口uart4和uart6,在使用uart6发送数据的时候会阻塞,猜想应该是驱动的问题,所以接下来进行分析2. 分析过程先分析串口驱动,关于串口驱动这部分的架构不再赘述,我们看下源文件,在发送的地方看到了一处while循环读取串口发送完成寄存器的代码while (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_TC) == RESET);在整个发送数据的过程中也只有这处可能阻塞,这块阻塞的话肯定是在别处原创 2020-09-03 14:43:43 · 1938 阅读 · 3 评论 -
Stm32f091RCTX在 rt-thread下添加串口驱动遇到的问题
1. 问题描述在 rt-thread添加uart驱动 - stm32f091RCTx,这篇博客中我们描述了如何添加rt-thread的串口驱动,但是在添加完uart3的驱动后发现用DMA方式接收不到串口数据,经过一番测试后猜测应该是 DMA通道的问题,于是查看参考手册发现了问题所在,在C1S这个寄存器的值为零时,DMA的通道使用情况如下:我们使用STM32CubMX配置出来的初始画函数中,uart3使用的是 DMA1_Channel1 通道,但是在图中我们看出来USART3_RX 和 USART4_R原创 2020-08-26 18:46:13 · 347 阅读 · 0 评论 -
如何下载STM32的各种参考资料和手册
1. 通过官网下载官网链接:https://www.st.com/content/st_com/zh.html我们可以直接在官网搜索芯片型号即可,例如:点击具体的芯片型号,跳转进去,进来以后点击资源,各种文件就在下面了,可以直接下载查看2. 通过STM32CubMX 下载相关资料STM32CubMX可真的是一个神器啊,我们可以在上面找到各种资料...原创 2020-08-26 17:37:34 · 3231 阅读 · 1 评论 -
rt-thread添加uart驱动 - stm32f091RCTx
1. 在menuconfig中添加菜单选项串口驱动的Kconfig文件在bord目录中,打开Kconfig文件,添加我们的串口选项,我们添加的是uart3的驱动依次在UART2下面添加即可,如下图:保存后在env工具中执行menuconfig命令,在menuconfig的相应菜单下就看见了我们的UART3的选项,保存后重新生成mdk5工程,在rtconfig.h文件中就可以看见已经有BSP_USING_UART3 和 BSP_UART3_RX_USING_DMA的选项了3. 驱动实现我们使用的原创 2020-08-24 18:25:40 · 873 阅读 · 0 评论 -
rt-thread移植到 stm32f091RC并修改uart1位console串口
1. 生成初始化工程我们使用rt-thread的已有bsp来生成我们需要的mdk5的工程,使用如下图的bsp基础工程使用env工具来生成工程,在当前bsp目录下执行scons –dist ,然后在dist目录下就会生成相对应的工程以下是生成后的目录结构2. 工程配置打开mdk5的工程,配置芯片和debug选项3. 下载调试工程默认用的console串口是uart2,我想在工程中用uart1作为console和DEBUG用的串口,所以直接在配置文件中做了修改,如下:但是配置之后发现原创 2020-08-24 15:26:05 · 810 阅读 · 0 评论 -
stm32栈空间分布分析——让你能更合理的设置栈空间,防止栈溢出
今天我们利用stm32来探究一下程序运行时的栈空间是怎么分布的,为什么栈空间设置不合理时会有栈溢出导致程序崩溃下面是我们要使用的测试代码,先贴出来, 为了更好地分析栈空间我们把栈空间用串口dump出来void hex_dump(unsigned char *p, int len){ uint32_t i, j; //printf("\n===============dump start...原创 2020-04-16 18:39:12 · 2471 阅读 · 0 评论 -
stm32F107VCT6 + CUBMX + DP83848 + lwip 移植
1.硬件配置关于硬件配置这块其实没什么可说的,因为用的是stm32CUBMX,所以基本上都是图形化配置一下就可以了打开 ETH 和 LWIP(我用的是MII模式)关于ETH和lwip的配置基本上都是默认,打开ETH的中断功能即可基本上硬件配置也就是这些,然后接下来生成工程,烧录即可,但是烧录之后发现网口灯不亮,这第一步就失败了,接下来车看原理图,发现默认的ETH里面还有...原创 2019-12-20 11:05:35 · 1467 阅读 · 2 评论 -
MDK5(keil5)软件packs下载地址
下载地址:官网地址进入网页后直接往下翻找到STMicroelectronics下载相应的软件包即可(进入网页可能稍慢,等待一下即可)原创 2018-12-26 10:37:43 · 5454 阅读 · 0 评论 -
在freertos中因为定时器任务优先级的问题导致定时器无法正常运行的问题
在freertos中用到了软件的定时器,但是发现启动某个任务后导致定时器不能正常启动,经排查发现是定时器任务的优先级太低,在另外一个任务中有一段for的死循环,导致定时器Daemon线程无法被调度所以定时器运行不起来修改优先级后定时器可以正常运行,在多任务系统中尽量避免忙等的状态,可以使用osWait超时等待或者消息队列等消息机制实现任务的状态切换 ...原创 2018-09-17 16:31:53 · 9630 阅读 · 0 评论 -
Stm32 从IAP跳转到app死机的问题
我的IAP和APP都是用STMCUBMX建的工程,而且在APP中用了freertos,但是在跳转之后出现了死机的问题,但是在APP中有log的输出,然后才死机的,说明跳转是没有问题的,下面跳转的程序,在跳转前关闭了打开的中断 然后猜想可能是中断向量表的问题,所以在APP中打印中断向量表的地址:打印后发现地址还是0x08000000, 那就是中断向量表没有更新的问题,所以在...原创 2018-09-12 11:25:17 · 9313 阅读 · 2 评论 -
解析 STM32 的启动过程
文章转至 http://bbs.eeworld.com.cn/thread-293020-1-4.html当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数...转载 2018-09-08 15:51:18 · 557 阅读 · 0 评论 -
STM32 flash被锁定不能烧写解决方法
在误操作后会锁死芯片导致不能烧录,如下图: 解决办法是用STM32 ST-LINK Utility 工具去解锁芯片:先连接设备然后在target选项下做如下操作解锁,选择unselecet all 然后应用即可:...原创 2018-09-11 13:59:07 · 20981 阅读 · 1 评论 -
stm32F030C8单片机串口利用USART_IT_IDLE接收完整的一帧
USART_IT_RXNE寄存器是在没接收到一个字节时产生中断,而USART_IT_IDLE寄存器是在接收到完整一帧后产生中断,即接收完一个字节在一个字节的时间内再无接收的话就会产生中断下面是源码:void USART1_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitS...原创 2018-03-15 16:49:18 · 6553 阅读 · 1 评论 -
stm32F030C8单片机串口利用USART_IT_IDLE+DMA接收完整的一帧
之前用串口的USART_IT_IDLE中断和USART_IT_RXNE(此中断每接收一个字节就会进一次中断),然后利用USART_IT_IDLE检测空闲接收完整的一帧数据,但是此方法需要频繁进入中断,影响CPU效率,所以利用USART_IT_IDLE+DMA进一次中断就可以接收完整的一帧数据代码://串口接收DMA缓存 #define UART_RX_LEN 128 /********...原创 2018-03-16 17:40:16 · 8420 阅读 · 1 评论 -
STM32之NVIC的深入详解
朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统。什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。STM32的中有一个强大而方便的NVIC,它是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由 NVIC来控制的。 特性:● 60个可屏蔽中断通道(不包...转载 2018-03-13 17:49:28 · 1143 阅读 · 2 评论 -
STM32的时钟树解析
STM32的时钟树 对于广大初次接触STM32的读者朋友(甚至是初次接触ARM器件的读者朋友)来说,在熟悉了开发环境的使用之后,往往“栽倒”在同一个问题上。这问题有个关键字叫:时钟树。 众所周知,微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动——往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟“能量”扩散流动的路径...转载 2018-03-20 10:29:42 · 1461 阅读 · 1 评论 -
stm32基础知识学习——系统架构及时钟
1.stm32系统架构 stm32主要由两个主模块和四个从模块构成1>二个主模块 : Cortex-M0 内核及先进高性能总线(AHB bus) 通用DMA ( GP-DMA – general-purpose DMA)2>四个从模块 : 内部SRAM 内部闪存存储器 AHB 到APB 的桥, 所有的外设都挂在APB 总线上 专门用于连接GPIO 口的AH原创 2018-04-08 21:47:26 · 694 阅读 · 0 评论 -
解决IAR环境下用ST-LINK烧录stm32出现 : Fatal error: ST-Link, No MCU device found Session aborted! 错误
在IAR环境下用ST-LINK烧录stm32回报错,IAR配置如下:直接烧录会出现以下错误:解决方法:如果板子上有复位键的话一直按住复位键,没有的话可以把复位引脚和GND短接,然后点击烧录按钮当出现开始烧录的提示后松开复位键,即可正常烧录造成原因:主要是在程序中对JTAG口进行了remap配置,然后再重新烧录后造成的,不要使用JATG的引脚,使用别的引脚即可...原创 2018-04-09 10:19:55 · 14783 阅读 · 1 评论 -
stm32移植cJson后数据过长出现解析失败解决
在stm32工程中使用cJSON时解析过长数据出现失败,发现是stm32的heap太小,在内存够用的情况下可以修改icf文件更改heap的大小原创 2018-08-02 15:50:38 · 3129 阅读 · 0 评论 -
STM32CUBMX 使用ST-Link下载没有打开Serial Wire导致下载一次后不能再次下载
STM32CUBMX 使用ST-Link下载没有打开Serial Wire导致下载一次后不能再次下载,解决办法拉高boot0 和 boot1,从SRAM启动 生成工程之前配置sys下的SW原创 2018-08-21 19:49:51 · 1485 阅读 · 0 评论 -
IAR调试stm32时出现FILE未定义的error
在IAR中调试stm32时出现了FILE未定义的ERROR解决方法:原创 2018-03-09 11:03:44 · 2957 阅读 · 0 评论