一、NVIC中断系统Cortex-M4集成了嵌套式矢量型中断控制器(NestedVectoredInterruptController,NVIC)来实现高效的异常和中断处理。中断系统包含外部中断、定时器中断、DMA中断和串口中断等。二、EXTI外部中断EXTI(中断/事件控制器)包括23个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。EXTI有三种触发类型:上升沿触发、下降沿触发和任意沿触发。 三、中断触发源EXTI触发源包括来自I/O管脚的16根线以及来自内部模块的7根线,包括LVD、RTC闹钟、USB唤醒、以太网唤醒、RTC侵入和时间戳、RTC唤醒。通过配置SYSC
一、移植库源代码从github下载:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32无法下载或者下载太慢可以用资源下载,无需积分。freeModbus主机源码下载示例代码一、工程创建参考从机代码创建三、源代码移植将FreeModbus主机源代码拷贝到工程中间件-第三方库-freemodbus源码库:即Middlewares\Third_Party\FreeModbusMaster文件夹中。将源码添加到工程中头文件包含3.1源码接口完善FreeModbus的移植主要包含:物理层接口的修改、应用层回调的修改。具体函数如下:3.1
GD32F103串口DMA收发(空闲中断+DMA)此前写了一篇DMA串口收发的文章,参照的是GD官方例程,虽然实现了串口数据的传输,后面在实际项目应用时发现还是有点问题,不能完全按照预想的方式进行数据传输和处理,经过不断的调试,现更新如下,特此记录。GD32F103串口DMA收发(空闲中断+DMA)1.串口IO初始化这次使用的是GD32F103CBT6串口2,对应Pin脚PB10、PB11。代码如下:uint8_trxbuffer[84];uint8_ttxbuffer[84]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a};#defin
简介GD32E50X的SHRTIM与STM32的HRTIM工作原理高度相似,但是兆易官方只有从定时器发波的例子(批评),这里教大家使用主定时器来改变从定时器的起始相位的方式产生移相互补PWM(库函数配置方式)。一、SHRTIM功能简介SHRTIM高分辨率时钟,在180MHz主频基础上64倍频,可以获得最高11.52GHz频率的PWM,用来产生1MHz方波可以获得11520的调整步长,隔壁STM32G4X4只有5440调整步长,或许GD32E50X就是用来对标STM32G4X4。SHRTIM拥有一个MASTER_TIMER和五个SLAVE_TIMER,结构框图如下:二、库函数配置1.SHRTIM
目录简介片选线时序运行模式基本发送和技术流程主机发送主机接收从机发送从机接收例程主机和从机全双工通信简介SPI是串行外设接口(SerialPeripheralInterface)的缩写,是一种高速的,全双工,同步的通信总线。SPI总共需要4根线来实现通信,NSS:片选线,用于选择需要通信的从机;CLK:同步时钟线,用于提供同步时钟信号;MISO:主机读从机写线;MOSI:主机写从机读线。GD32F103系列的SPI最高速度为18MHz。片选线SPI的片选逻辑要比I2C的简单得多,通常一个SPI外设会有多条片选线,如下图。所以我们想要与哪个从机进行通信,那么只需要拉低对应从机的片选线即可,无需像
概述本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是GD32F303ZET6主控,512K大小的Flash。最近在弄ST和GD的课程,需要GD样片的可以加群申请:6_15061293。csdn课程课程更加详细。https://download.csdn.net/course/detail/37144样品申请https://www.wjx.top/vm/wFGhGPF.aspx#生成例程这里准备了自己绘制的开发板进行验证。系统架构示意图Flash的操作可以通过FMC控制器进行操作。FLASH分配要注意的
系列文章目录第一章GD32学习笔记1(高难度工程,点亮一个LED灯)文章目录系列文章目录前言一、工作流程二、新建工程的准备工作三、新建工程四、工程目录管理五、代码实现1、初始化2、主函数总结GD32学习笔记1(高难度工程,点亮一个LED灯)前言GD系列单片机在各行各业使用的比重越来越高,因其较为便宜的价格和对标型号不输ST的性能,使得越来越多的国内企业愿意使用(比如我们公司),作为一个刚上岗的实习工程师,我打算一边学习GD32一边把所学会的东西由易至难的分享给大家,我所使用的芯片是GD32F407VE。一、工作流程点亮一个LED灯这种复杂工程,它有一套比较复杂的工作流程:初始化——输出。初始化
单片机固件升级相关前言理论实践前言众所都周知,固件固件就是固定不动的软件,所以不用升级,此贴完结。。。。。。哎,话虽如此固件一般情况下不需要更新,毕竟主要功能是为控制一些底层的硬件,但是你永远不知道明天和需求哪个先来。所以在一些必要时刻需要给你的单片机留一个后门用于应对各种需求。理论以stm32举例,默认情况下固件程序烧写在ROM上,所以只要使用一些手段在对应地址写上对应数据就可以了。废话不多说下面举几个常见工具和常用的下载和更新固件的方式。实践1通过下载器下载和更新固件程序:stm32或者其他arm内核下载常用的下载仿真器有j-link:更简洁的有jlinkob:当然还有ST自家的st-li
GD32CMakeexample一个串口收发简单例子。https://github.com/Huffer342-WSH/GD32_CMake_Example可以下载该工程,稍微了解一点cmake就可以简单修改直接使用。GD32CMakeexample使用到的工具编译与烧录命令行VSCode调试配合VSCode的marus25.cortex-debug插件实现调试功能RTT使用方法marus25.cortex-debug手动连接注意事项交叉编译工具链设置链接脚本启动文件从零开始搭建工程使用到的工具交叉编译器:gcc-arm-none-eabi-10.3-2021.10-win32构建工具:Nin
一:在使用GD32单片机进行串口DMA发送时,需要进行以下配置:使能DMA时钟和串口时钟。配置DMA通道,包括数据方向、数据宽度、传输模式等参数。配置串口发送端口GPIO的模式和引脚。配置串口的基本参数,如波特率、数据位、停止位、校验位等。配置串口DMA发送所需要的DMA缓冲区。初始化DMA传输,启动发送数据。等待DMA传输完成的中断或者轮询方式,根据需要来进行处理。二;GD32单片机有两个DMA,分别是DMA0和DMA1每个DMA有8个地址通道,每个通道可选择8个外设地址,当然除了外设以外其他所有内存地址DMA可以进行直接搬运:两个DMA在工作时,每次只能搬运一个通道的内容,所以当多个通道同