HDSC
文章平均质量分 75
华大MCU
赤子001
从事软硬件设计;FPGA实现,算法研究等,希望和各位同仁积极交流,共同提高,继续提高技术水平,管理能力,职业素养等
展开
-
Modbus协议 报文间隔3.5个字符计算&设置
Modbus协议 报文间隔3.5个字符计算&设置原创 2022-11-17 18:12:53 · 3470 阅读 · 1 评论 -
手把手教程6-2: F460把debug printf功能改到UART1
F460把debug printf功能改到UART1原创 2022-09-04 21:50:13 · 430 阅读 · 0 评论 -
FreeModbus V1.6 主机
FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机源码是需要收费的。同时网上也没有发现比较好的开源的Modbus主机协议栈,所以才开发这款支持主机模式的FreeModbus协议栈。本版FreeModbus版本号更改为V1.6,特性如下:新增加的主机源码与原有从机的风格及接口保持一致; 支持主机与从机在同一协议栈运行; 支持实时操作系统及裸机移植; 为应用提供多种请求模式,用户可以选择阻塞还是非阻塞模式,自定义超时时间等,方便应用层灵活调用; 支持所有常用的Modbus..原创 2022-05-10 16:04:07 · 3626 阅读 · 1 评论 -
手把手教程15: F460 移植Free modbus
手把手教程15: F460 移植Free modbus目录一、移植前的准备二、将FreeModbus文件源码添加到STM32工程中三、PORT文件夹修改1、port.h文件2、portserial.c2.1 485使能引脚2.2 UART初始化函数以下部分的串口初始化没有开启TIMEROUT功能。2.3 串口初始化xMBPortSerialInit函数2.4vMBPortSerialEnable()函数2.5xMBPortSerialPutByte()函数..原创 2022-05-09 17:18:54 · 573 阅读 · 0 评论 -
c语言中,指针的含义
c语言中,p = p->next;是什么意思?->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.举个例子:struct Data{int a,b,c;}; /*定义结构体*/struct Data * p;/*定义结构体指针*/struct Data A = {1,2,3};/*声明变量A*/int原创 2022-04-14 09:58:49 · 272 阅读 · 0 评论 -
FreeModbus开源协议栈的(六)FreeModbus状态机和事件总结
FreeModbus开源协议栈的(六)FreeModbus状态机和事件总结从FreeModbus源码中能够发现有很多状态机,了解这些状态机能更快的理解FreeModbus源码流程。下面逐个介绍各个状态机的流程和驱动机制。由于modbus有3种封包模式ASCII,RTU,TCP,这里就以最常用的RTU为例,从源码进行分析,此例程为源码中的win32例程,不过不影响探究流程。分析有不对的地方,欢迎指正1. FreeModbus 串口接收状态机先上一张串口接收状态机,下面代码也是围绕这.转载 2022-03-30 16:12:04 · 1825 阅读 · 0 评论 -
FreeModbus开源协议栈的(五)野火指南者+Keil+FreeModbus 的Modbus RTU从站
在网上关于STM32F103+FreeModbus 的ModbusRTU从站移植的移植有很多,在此记录一下自己在野火的指南者开发板上基于FreeModbus的Modbus RTU从站的过程。文章目录硬件准备野火指南者(STM32F103VET6)软件准备1、freeModbus-v1.62、指南者开发板工程模板(随便一个工程都可以,我习惯用一个移植好库函数的空白工程模板)工程准备工作1、…\freemodbus-master\freemodbus-master\...转载 2022-03-28 19:42:24 · 6896 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(四)- FreeModbus在STM32上的移植
FreeModbus开源协议栈的移植和详解(四)概述在前面几篇文章中,对FreeModbus文件的源码进行了分析,还剩下与平台相关的接口部分,在这里通过对FreeModbus在STM32上的移植过程为例来介绍FreeModbus的接口部分。一、移植前的准备移植FreeModbus之前需要准备好FreeModbus源码,关于源码的获取方式,参考我之前的文章:https://blog.csdn.net/u014100102/article/details/90453930STM32的转载 2022-03-28 19:26:43 · 3132 阅读 · 0 评论 -
移植FreeModbus
freeemodbus百度百科(介绍比较详细)https://baike.baidu.com/item/freemodbus/7566841?fr=aladdinSTMC2CubeMX | STM32 HAL库移植FreeModbus详细步骤https://blog.csdn.net/qq153471503/article/details/104840279ModBus协议简介及移植到STM32单片机https://blog.csdn.net/silent123go/article/details原创 2022-03-28 18:36:38 · 928 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(二)- modbus主流程分析
FreeModbus开源协议栈的移植和详解(二)概述本篇主要介绍main函数以及mb.c文件,通过这两部分,我们能够从整体上分析FreeModbus。一、从main函数说起打开FreeModbus文件夹中的demo文件夹,该文件夹下是各个平台下的demo,这里我们选择AVR平台来分析。打开AVR文件夹下的demo.c文件,main函数代码如下:intmain( void ){ const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0x转载 2022-03-28 18:30:56 · 3221 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(三)- RTU协议代码分析
FreeModbus开源协议栈的移植和详解(二)目录概述一、RTU文件夹的文件二、mbrtu.c文件2.1数据类型说明2.2函数说明2.1eMBRTUInit()函数2.2eMBRTUStart()函数2.3eMBRTUStop()函数2.4eMBRTUReceive()函数2.5eMBRTUSend()函数2.6xMBRTUReceiveFSM()函数2.7xMBRTUTransmitFSM()函数2.8xMBRTUTimerT35Expired()转载 2022-03-28 17:42:00 · 2615 阅读 · 0 评论 -
modbus_RTU从机协议实现
1、freemodbus机制小结这里对 freemodbus机制做一下分析小结。freemodbus 的应用场景 主要是在 非linux下的 单片机系统,freemodbus 是一个不错的 开源modbus 从机 功能,不仅代码开源,重要的是非常稳定可靠。 这里先简单的 从文字的角度 来分析一下 freemodbus 从机的 实现机制,freemodbus 将状态机 的编程思想 用到了极致,作为从机,最基本的就是串口接收,而modbus通信的数据 接收长度是不定的,这一...原创 2022-03-30 15:58:00 · 2657 阅读 · 0 评论 -
手把手教程13: F460 WDG(看门狗)
1. 看门狗计数器1.1 简介 看门狗计数器有两个,一种是计数时钟源为专用内部 RC( SWDTLRC:10KHz)的专用看门狗计数器( SWDT), 另一种是计数时钟源为 PCLK3 的通用看门狗计数器( WDT)。专用看门狗和通用看门狗是 16 位递减计数器,用来监测由于外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行而产生的软件故障。两个看门狗都支持窗口功能。在计数开始前可预设窗口区间,计数值位于窗口区间时,可刷新计数器,计数重...原创 2022-03-25 17:04:01 · 654 阅读 · 0 评论 -
手把手教程12: F460 PWC(电源控制)
手把手教程12: F460 PWC目录手把手教程12: F460 PWC1. 电源控制( PWC)1.1 简介1.2 电源分布1.3 电源电压检测单元(PVD)说明1.3.1 可编程电压检测 1(PVD1)、可编程电压检测 2(PVD2)1.3.2 PVD1、 PVD2 中断/复位框图1.3.3 PVD1 中断和复位1.3.4 PVD2 中断和复位2. 启用PVD22.1 配置基本参数2.2 中断调用3. PVD的意义1. 电源控制( P...原创 2022-03-25 16:10:48 · 1742 阅读 · 0 评论 -
手把手教程11: F460 软计时器
手把手教程11: F460 软计时在上一篇文章—— 手把手教程10:F460的SysTick滴答时钟——中,我们配置好了systick,在此基础上,可以随意定义计时器,供程序各个部分使用。1. 定义结构体比如需要用到2个计时器,我们在头文件里声明2个结构体:typedef struct{ /**/ xx_bool_t FirstCountEn; xx_uint16_t FirstCount; /**/ xx_bool_t SecondCountEn; .原创 2022-03-24 21:29:25 · 318 阅读 · 0 评论 -
signed int 数据范围_整型数据类型
1、整型数据的分类(1)基本整型(int型)编译系统分配给int型数据2个字节或4个字节(由具体的C编译系统自行决定)。如Turbo C 2.0为每一个整型数据分配2个字节(16个二进制位),而Visual C++为每一个整型数据分配4个字节(32位)。在存储单元中的存储方式是:用整数的补码形式存放。一个正数的补码是此书的二进制形式,如5的二进制形式是101,如果用两个字节存放一个整数,则在存储单元中数据形式如图1所示。如果是一个负数,则应先求出负数的补码。求负数的补码的方法是:先将此数的绝对值写成转载 2022-03-23 22:08:59 · 3392 阅读 · 0 评论 -
手把手教程8: F460 ADC调试
手把手教程8: F460 ADC调试1. 简介12 位 ADC 是一种采用逐次逼近方式的模拟数字转换器。它最大拥有 17 个模拟输入通道,可以转换来自外部引脚、以及芯片内部的模拟信号。这些模拟输入通道可以任意组合成一个序列,一个序列可以进行单次扫描转换,或连续扫描转换。支持对任意指定通道进行连续多次转换并对转换结果进行平均。 ADC 模块还搭载模拟看门狗功能,对任意指定通道的转换结果进行监视,检测是否超出用户设定的阀值。可配置 12 位、 10 位和 8 位分辨率 周边时钟 PCLK4原创 2022-03-23 22:38:34 · 1044 阅读 · 0 评论 -
手把手教程9: F460 flash调试
手把手教程8: F460 flash调试目录手把手教程8: F460 flash调试FLASH的主要特征:FLASH读取数据:FLASH编程跟擦除:操作步骤擦除操作的步骤:从flash中分出一部分来用作数据存储制作scatter文件FLASH的主要特征:1、512k容量 分为64个扇区 每个扇区为8K byte2、编程单位4byte 擦除单位为8Kbyte3、OTP区域一共1020byte 分为960byte数据区、60bytes锁存区FLAS.原创 2022-03-22 18:04:19 · 466 阅读 · 0 评论 -
手把手教程9-2: 460使用Flash模拟EEPROM
目录在ram中运行程序存储数据思路及实现如何判断哪个数据是有可用的?在一些应用中,经常需要存储一些信息,掉电后可以保存。当然,可以外挂eeprom,flash也可以。不过呢,占用空间,资源,增加成本,设计上的难度也会增加(况且,460的flash这么大,分出来一点作为数据存储)。更具hc32f460的资料,有如下信息:1 flash擦除的最小单元为8K bytes,最小编程单元4 bytes;2 flash在擦除和编程期间,从flash读取的数值是不确定的(很关键)。根.转载 2022-03-22 15:41:51 · 720 阅读 · 0 评论 -
Systick定时器几个简单的函数简介
Systick定时器Systick定时器是什么?Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作;SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常中断请求(异常号:15);Systick中断的优先级也可以设置。 CTRL SysTick控制和状态寄存器 .转载 2022-03-22 15:30:39 · 1051 阅读 · 0 评论 -
手把手教程10:F460的SysTick滴答时钟
F460的SysTick滴答时钟目录1.添加头文件和库文件或者自己写滴答逻辑2.开启滴答中断3.更新时钟频率全局变量4.使用延迟使用华大的滴答时钟做精准延迟需要以下四个步骤1.添加头文件和库文件或者自己写滴答逻辑在文件ddl_config.h中开启宏#define DDL_UTILITY_ENABLE (DDL_ON)添加hc32f460_utility.c和hc32f460_utility.h文件,主要原创 2022-03-21 21:03:04 · 834 阅读 · 2 评论 -
F460 系列的中断控制器 INTC
HC32F460 系列的中断控制器 INTC目录HC32F460 系列的中断控制器 INTC1. NMI 不可屏蔽中断1.1 NMI 主要特点1.2 NMI 寄存器说明1.3 NMI 配置流程说明1.2 外部管脚中断1.2.1 外部管脚中断寄存器1.2.2 外部管脚中断配置流程说明3. 软件中断4. 中断源选择4.1 中断选择寄存器4.2 中断选择寄存器方法说明HC32F460 系列的中断控制器(INTC)模块丰富的功能,其中包括了对不可屏蔽中...原创 2022-03-20 15:11:39 · 1230 阅读 · 0 评论 -
HC32F460库简介-USART
API简介en_result_t USART_UART_Init(M4_USART_TypeDef *USARTx, const stc_usart_uart_init_t *pstcInitCfg); //初始化指定 UASRT 的 UART 模式en_result_t USART_CLKSYNC_Init(M4_USART_TypeDef *USARTx, co...转载 2022-03-17 20:37:12 · 1015 阅读 · 0 评论 -
手把手教程7: F460 串口(485)调试
手把手教程7: F460串口调试1. USART架构框图1.1STM32 USART架构框图2. F460 USART架构框图2. 串口配置步骤2.1STM32串口配置步骤:野火教程1) 使能 RX 和 TX 引脚 GPIO 时钟和 USART 时钟;2) 初始化 GPIO,并将 GPIO 复用到 USART 上;3) 配置 USART 参数;4) 配置中断控制器并使能 USART 接收中断;5) 使能 USART;6) 在 USAR原创 2022-03-19 22:21:51 · 7151 阅读 · 0 评论 -
手把手教程5: f460仿真调试,查看变量、端口
无法识别引脚端口问题参考:成功解决:MDK5逻辑分析窗口Unknown signal的问题_GniLAY1022的博客-CSDN博客_keil5逻辑分析窗口第一步,编译程序,查看编译输出窗口,没有报错,也没有警告,再点击调试按钮第二步,设置要查看的引脚端口,点击Setup第三步,点击插入第四步,输入要查看的引脚,例如GPIOD_Pin_12引脚,则输入PORTD.12,注意,D后面有一个小数点,而且都是大写,不能是小写,然后点击空白处,此刻会出现一个错误,软件无法识...原创 2022-03-14 16:49:30 · 3941 阅读 · 0 评论 -
F460 CLK配置功能模块说明
F460CLK配置功能模块说明目录F460CLK配置功能模块说明CLK配置:1. DDL_ICG——初始化配置2. DDL_UTILITY——基础功能函数3.DDL_PRINT-待细化4.DDL_ADC5.DDL_AES——AES 加解密算法处理器6.DDL_CAN7. DDL_CLK8. DDL_CMP——电压比较器9. DDL_CRC10. DDL_DCU——数据计算单元11. DDL_DMAC——DMA 控制器...原创 2022-03-09 16:47:29 · 1435 阅读 · 0 评论 -
F460启动过程分析2-f460启动分析和时钟配置
华大HC32f460启动分析和时钟配置软件环境系统:win10sdk版本:hc32f460_ddl_Rev2.0.0数据手册版本:HC32F460系列用户手册 Rev1.21.pdfide:keil5开发板:https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debhMzSwz&ft=t&id=660179379335https://item.taobao.com/item.htm?spm=a2oq0.原创 2022-03-08 17:49:47 · 729 阅读 · 0 评论 -
F460启动过程分析1
一、stm32启动过程的解析stm32上电后,是怎么样找到main函数的呢?很显然,stm32没办法从硬件上找到main函数的入口地址,因为使用C语言开发后,变量和函数的地址由编译器自动分配,这样就导致main函数的入口地址在stm32的内部存储空间中不再是固定的。那么stm32是通过什么东西找到main函数的入口地址呢,在跳转到main函数之前,做了什么?其实,stm32上电后,是通过启动文件(英文为BootLoader)(例如startup_stm32f10x_hd.h)找到main函数的.转载 2022-03-08 16:05:09 · 182 阅读 · 0 评论 -
HDSC32 MDK编译报错
error: #29: expected an expression1、编译下面语句出错for(int i=0; i<16; i++)2、MDK 默认用的是 C90,配置一下可以支持 C99,按下图修改参考:stm32 mdk c++(error: #29: expected an expression)_创造晴天-CSDN博客...原创 2022-03-09 18:21:23 · 136 阅读 · 0 评论 -
手把手教程3-2: F460建立新的驱动文件
1. 新建GPIO驱动文件在\F460_Project_test\Driver\src下新建驱动文件并命名为drv_do.c2. 设计驱动文件2.1 在drv_do.c中,新建函数static void _gpio_init(void),然后 将主函数中关于IO初始化部分的代码迁移进来:同时要添加: #include "hc32_ddl.h,要包含头文件;static void _gpio_init(void){ stc_port_init_t stcPortIni...原创 2022-03-03 18:20:56 · 438 阅读 · 0 评论 -
手把手教程3: F460建立一个GPIO点灯例程
经过前两节华大单片机HC32F460如何新建工程(ddl库版本)、如何向MDK中加入头文件和库文件建立了例程模板和学会了加入头文件库文件,接下来我们移植一下GPIO点亮LED的例程。1. 准备工作准备 \驱动库及样例\hc32f460_ddl_Rev2.1.0\example\ev_hc32f460_lqfp100_v2\gpio\gpio_output下的GPIO例程;再打开我们建立的工程模板;2. GPIO使能在官方GPIO例程中,GPIO的初始化是定义在main函数中的:原创 2022-03-03 15:15:51 · 1641 阅读 · 0 评论 -
ST-link/V2引脚定义
目录LED状态说明SWIM接口STM32的JTAG / SWD接口LED状态说明闪烁红色:ST-LINK/V2连接到计算机后,第一次USB枚举过程 红色:ST-LINK/V2与计算机已建立连接 闪烁绿色/红色:目标板和计算机在进行数据交换 绿色:通讯完成 橙色(红色+绿色):通讯失败SWIM接口下面为ST-Link/V2 SWIM接口定义:由于STM8的SWIM接口只需要4根连接线,所以ST-LINK/V2连接至STM8目标板时需要注意连接位置...转载 2022-03-03 14:24:11 · 16674 阅读 · 0 评论 -
手把手教程1: 华大单片机HC32F460如何新建工程(ddl库版本)
华大单片机HC32F460如何新建工程(ddl库版本)准备工作在开发文件夹中找个位置建立F460_Project_test文件夹,此文件夹用来存储项目中调用及生成的所有非内核的文件(内核文件位置与keil安装位置有关)。在mdk_test文件夹内分别建立App、CMSIS、Driver、Lib和MDK、DOC文件夹 把HC32F460_芯片资料包中\HC32F460_SDK\驱动库及样例\hc32f460_ddl_Rev2.1.0.zip进行解压。把\HC32F460_DDL_Rev2.原创 2022-03-02 18:11:39 · 4820 阅读 · 7 评论 -
手把手教程2: keil如何向MDK中加入头文件和库文件
华大MCU如何向MDK中加入头文件和库文件大多数习惯于8位单片机开发的工程师,都会使用操作寄存器的方式来使用单片机。当初次接触华大单片机库开发的时候,会发现库里有好多的文件,不知道如何下手。本篇文章会先介绍库的结构和里面关键文件,之后会介绍如何向之前建立好的工程里加入文件,使工程能编译起来。我们首先看下HC32F460芯片的DDL库里文件结构关键文件介绍startup_hc32f460petb.s文件为汇编格式的文件,是启动文件。启动文件主要是进行堆栈之类的初始化,中断向量表以及中断函数原创 2022-03-02 18:37:16 · 10978 阅读 · 0 评论 -
华大单片机HC32F460如何新建工程(ddl库版本)
华大单片机HC32F460如何新建工程(ddl库版本)准备工作在硬盘中找个位置建立mdk_test文件夹,此文件夹用来存储项目中调用及生成的所有非内核的文件(内核文件位置与keil安装位置有关)。在mdk_test文件夹内分别建立app、common、driver和source文件夹把HC32F460_芯片资料包中\HC32F003_SDK\驱动库及样例\HC32F003_DDL_Rev1.0.2.zip进行解压。把\HC32F460_DDL_Rev2.1.0\driver文件夹中的..原创 2022-03-01 13:54:50 · 1054 阅读 · 1 评论 -
Source Insight入门
使用Source Insight查看源码一、打开Source Insight软件二、新建工程添加工程目录在上方菜单栏中选择Project-》new Project的选项,填写工程名称,和存储位置,如下图所示。比如我要看linux-3.10的内核,我就命名为Linux-3.10,同时将存储地址直接设置为我源码所在的目录下。下图直接点确定即可三、添加内容上图中确认之后,出现下图所示的内容,左边方框为想要查看的源码所存在的位置,确认正确之后,点击右侧的Add Tree进行内容的添加。点击Ad原创 2021-12-29 16:17:14 · 157 阅读 · 0 评论 -
MCU_GPIO工作原理
https://blog.csdn.net/weixin_50722839/article/details/115908694原创 2021-12-03 15:35:49 · 318 阅读 · 0 评论 -
【无标题】
华大单片机GPIO配置https://blog.csdn.net/willOkay/article/details/106580003芯缘意码的文章,比较详细;HC32 GPIO使用注意点https://blog.csdn.net/zhaopenglihui/article/details/118055778也总结的比较好华大单片机 HC32F460 GPIO配置说明https://blog.csdn.net/jianminmin1318987744/article/details/12074原创 2021-12-02 15:46:15 · 639 阅读 · 0 评论 -
超经典的STM32学习笔记——第一章GPIO口
超经典的STM32学习笔记——第一章GPIO口http://blog.chinaunix.net/uid-29270628-id-4346616.html固件库中与GPIO有关的函数主要有:原创 2021-12-02 15:43:39 · 248 阅读 · 0 评论 -
HC32F460(华大单片机)学习开发
基础开源教程:HC32F460(华大单片机)学习开发https://www.cnblogs.com/yangfengwu/category/1980120.html原创 2021-12-02 13:56:08 · 2167 阅读 · 0 评论