随笔分类 - STM32F207教程
STM32F207教程
摘要:在单片机中我们经常需要访问某个指定的寄存器或者到指定的RAM地址,在本文为简单描述,下文所说的存储器可指:寄存器,RAM等。 01、宏定义: 定义一个宏,将地址值转化为C指针,然后取这个指针指向的内容,这样就可以访问存储了,代码如下: #define SDA_DIR_REG *(__IO uint3
阅读全文
摘要:01、虚拟示波器 说到虚拟示波器,大家应该都不陌生。在学校时开发智能车,调节PID时虚拟示波器是必须的工具。虚拟示波器软件有很多,之前我也分享过一篇文章《一个超赞的开源串口虚拟示波器项目》,基于QT的开源软件,大家有兴趣可以看一下。一般情况下虚拟示波器软件都是通过串口接收数据的,所以要求MCU通过串
阅读全文
摘要:01、DSP简介 提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。 实际上,DSP的全称是数字信号处理(DigitalSignal
阅读全文
摘要:01、前言 在之前的文章在《STM32延时函数的四种方法》使用定时器延时,在《如何测量代码运行时间》中提到使用定时器外设计算代码运行时间。文中提到这种方法的明显缺点就是需要占用一个定时器,一些MCU在特定应用场景下定时器外设资源是十分稀缺的。在留言区有位大佬提到可以使用DWT,我就研究了一番。 02
阅读全文
摘要:01、示波器 测量一段代码运行时间第一时间想到的当然是示波器了,在测量开始的代码前面拉高某个GPIO,在结束测量的位置拉低这个GPIO,直接使用示波器查看这个GPIO的高电平时间长度即可,就是我们要测量的这段代码的运行时间。 那么直接上示例,为了模拟代码运行一段时间,这里我直接采用之前文章《STM3
阅读全文
摘要:01、WHY 为什么要使用到J-LinkCommander呢???大部分情况下,我们使用J-link都是在IDE中debug使用的,出现问题,直接debug复现然后解决。这是最常见的开发方式。 但是有些情况我们不能使用IDE直接debug,比如发布版本(JTAG或SWD接口可以正常使用),大批量生
阅读全文
摘要:01、概述 在之前的文章中《STM32IIC详解》中详细讲解了IIC协议,并且使用是NXP的官方手册,demo示例使用IIC读取RTC芯片,运行正常,没有任何问题。并且更新了《IIC踩过的坑》,讲述了在使用IIC读取RTC芯片时遇到的问题,并成功解决。 我以为我已经完全学会了IIC,但现实却打了脸
阅读全文
摘要:01、引入PID 电机控制 这样是没有反馈的,也就是说我们完全相信输入的数字,且是理想化的模型,比如输入占空比为50%的25Kz的PWM,车轮速度为1m/s,实际产品中会受到各种这样的影响,比如地面阻力,风阻等等,同样输入占空比为50%的25Kz的PWM,车轮的速度并不是1m/s。 这时候我们
阅读全文
摘要:01、简介 在之前的文章《stm32 串口详解》中,我们讲解了串口的基本应用,使用串口中断接收数据,串口中断发送回包(一般可以使用非中断形式发送回包,在数据接收不频繁的应用中。串口接收中断保证串口数据及时响应,使用非中断方式发送回包即可)。 后面的文章《STM32使用DMA接收串口数据》和《STM3
阅读全文
摘要: 01、LDO定义 LDO即lowdropoutregulator,是一种低压差线性稳压器。这是相对于传统的线性稳压器来说的。传统的线性稳压器,如78XX系列的芯片都要求输入电压要比输出电压至少高出2V~3V,否则就不能正常工作。但是在一些情况下,这样的条件显然是太苛刻了,如5V转3.3V,输入与
阅读全文
摘要:1、概述 上一篇文章《STM32使用DMA接收串口数据》讲解了如何使用DMA接收数据,使用DMA外设和串口外设,使用的中断是串口空闲中断。本篇文章主要讲解使用DMA发送数据,不会讲解基础的串口和DMA知识,直接上代码,如果有同学对DMA和串口都不熟悉,建议看一下上篇文章《STM32使用DMA接收串口
阅读全文
摘要:01、概述 在之前的文章里《STM32串口详解》和《STM32 DMA详解》文章中,详细讲解了STM32的串口和DMA外设,本篇文章将不在细述串口和DMA的知识。 在串口讲解的文章中,示例代码采用中断方式接收和发送数据,中断的好处在于可以及时响应,快速接收到数据,但缺点也很明显,那就是频繁中断,接收
阅读全文
摘要:01、TCP相关API 1、tcp_arg() 该函数用于传递给应用程序的具体状态,在控制块标志建立以后调用,即在函数tcp_new()调用之后才能调用 功能 指定应该传递给所有回调函数的应用程序的具体状态 原型 void tcp_arg(struct tcp_pcb *pcb, void *arg
阅读全文
摘要:1、网络接口结构 1.1、网络接口简介 TCP/IP参考模型中网络分为4层:应用层、传输层、网络层和网络接口层。网络接口层就对应着我们实际的网卡,LWIP支持多网口设计,LWIP中使用netif来描述每种网络接口的特性,如接口的IP地址、接口状态等等。那么如果有多个网卡的话LWIP是如何来组织这些网
阅读全文
摘要:现代的CPU基本上归为冯诺伊曼结构(也成普林斯顿结构)和哈佛结构。 冯洛伊曼结构就是我们所说的X86架构,而哈佛结构就是ARM架构。一个广泛用于桌面端(台式/笔记本/服务器/工作站等),一个雄踞移动领域,我们的手持设备(平板\手机用的大多就是他了)。 01、冯·诺依曼体系 冯·诺依曼体系结构图如下
阅读全文
摘要:01内存池 LWIP中的内存池(POOL)分配策略简单,但是内存的分配、释放效率高,可以有效的防止内存碎片的产生。在内存的策略下用户只能申请固定大小的空间,内存池方法主要用于LWIP内核中固定数据结构的分配,比如UDP控制块,TCP控制块等。LWIP内核在初始化的时候已经为每个数据结构类型都初始化了
阅读全文
摘要:1、数据包结构-pbuf 1.1、pbuf结构 LWIP是TCP/IP协议栈的一种具体实现,本质就是对数据包的处理,在LWIP中使用一个被称为pbuf的结构管理数据包,LWIP源码中的pbuf.c和pbuf.h这两个文件就是关于pbuf的,pbuf结构如下: 在pbuf.h文件中 下面是翻译版 st
阅读全文
摘要:本文主要来填坑,更正之前文章的错误。也进一步加深了我对SysTick定时器的理解,希望对你有帮助。 01、坑的由来 在之前的推文中《STM32延时的四种方法》介绍了使用查询定时器精确延时,使用的就是systick定时器,具体代码如下 void delay_us(uint32_t nus) { uin
阅读全文
摘要:在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。 有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。 我们需要的基础工程是已
阅读全文
摘要:01、硬件说明 为什么要写这篇文章?STM32的网络应用还是个复杂的外设的,拿到一个板子需要验证网络部分是否正常,硬件设计是否有问题,对于很熟悉LWIP的同学可以直接移植LWIP,验证硬件。但快速且方便的办法是修改ST的官方demo来验证硬件。(ST提供了CubeMX工具,如果使用该工具的话,也很方
阅读全文

浙公网安备 33010602011771号