- 博客(503)
- 资源 (46)
- 收藏
- 关注
原创 基于gd32f103移植freemodbus master 主栈
1.移植freemodbus master需要先移植RT-Thread操作系统2.移植freemodbus master协议栈在移植了RTT以后,我们需要移植就只有串口相关的函数移植freemodbus master协议栈具体步骤。
2024-01-18 13:51:20
376
原创 基于GD32F103使用串口不同的中断实现freemodbus移植
中断 还是需要修改mbfunccoils.c,mbfuncdisc.c,mbfuncholding.c,mbfuncinput.c文件;中断中断需要手动发送一次数据,即需要修改mbrtu.c文件的eMBRTUSend()函数。不需要修改修改mbrtu.c文件的eMBRTUSend()函数。使用串口不同的中断实现freemodbus移植。需要修改串口使能接口函数。需要修改串口中断函数。
2024-01-16 21:12:15
214
原创 【RTT驱动框架分析07】- adc驱动框架分析+adc中断唤醒adc驱动
实现了adc注册功能,在注册函数内部初始化io口,时钟,adc使能标定实现了adc的单通道采集功能即 convert 函数实现使能函数没有做什么工作,仅仅做了个通道的有效性判定。
2023-08-15 22:44:05
459
原创 【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现
因为有的芯片的PWM是具有互补输出功能的,即PWM的某一个通道是可以靠两个引脚来发出一对互补的波形。PWM 的输出频率由周期时间 period 决定,例如周期时间为 0.5ms (毫秒),则 period 值为 500000ns(纳秒),输出频率为 2KHz,占空比为 pulse / period,pulse 值不能超过 period。,第一个参数为命令,第二个参数为 PWM 设备名称,第 3 个参数为 PWM 通道,第 4 个参数为周期(单位纳秒),第 5 个参数为脉冲宽度(单位纳秒)。
2023-08-10 21:55:07
407
原创 【N32L40X】学习笔记13-软件IIC读写EEPROM AT24C02
8个字节每页,累计32个页通讯频率MAX = 400KAT24C02大小 2K对于at24c02 A2A1A0 这三个引脚没有使用由于设备在写周期中不会产生ACK恢复,因此这可用于确定周期何时完成(此特性可用于最大限度地提高总线吞吐量)。一旦从主服务器发出了写命令的停止条件,设备就会启动内部定时的写周期,然后就可以立即启动ACK轮询。这涉及到主服务器发送一个开始条件,然后是一个写命令的控制字节(R/W =0)。,然后主命令可以继续下一个读或写命令。该操作的流程图见图5-1。
2023-08-05 22:58:51
537
原创 【RTT驱动框架分析05】-spi驱动框架分析
获取到 SPI 设备句柄就可以使用 SPI 设备管理接口访问 SPI 设备器件,进行数据收发。参数描述deviceSPI 设备句柄message消息指针返回——RT_NULL成功发送非空指针发送失败,返回指向剩余未发送的 message 的指针此函数可以传输一连串消息,用户可以自定义每个待传输的 message 结构体各参数的数值,从而可以很方便的控制数据传输方式。/* 发送缓冲区指针 */ void * recv_buf;/* 接收缓冲区指针 */ rt_size_t length;
2023-08-02 22:24:18
346
原创 RTT应用编程_iic应用编程
和 SPI 总线的自定义传输接口一样,I2C 总线的自定义传输接口传输的数据也是以一个消息为单位。参数 msgs[] 指向待传输的消息数组,用户可以自定义每条消息的内容,实现 I2C 总线所支持的 2 种不同的数据传输模式。在使用 I2C 总线设备前需要根据 I2C 总线设备名称获取设备句柄,进而才可以操作 I2C 总线设备,查找设备函数如下所示,以下两个读写函数封装自 rt_i2c_transfer() 函数,用于读写I2C从设备的数据,更加简单易用,推荐使用。获取到 I2C 总线设备句柄就可以使用。
2023-08-02 22:06:46
380
原创 【RTT驱动框架分析04】-I2C驱动框架分析 at24cxx
和 SPI 总线的自定义传输接口一样,I2C 总线的自定义传输接口传输的数据也是以一个消息为单位。参数 msgs[] 指向待传输的消息数组,用户可以自定义每条消息的内容,实现 I2C 总线所支持的 2 种不同的数据传输模式。在使用 I2C 总线设备前需要根据 I2C 总线设备名称获取设备句柄,进而才可以操作 I2C 总线设备,查找设备函数如下所示,以下两个读写函数封装自 rt_i2c_transfer() 函数,用于读写I2C从设备的数据,更加简单易用,推荐使用。获取到 I2C 总线设备句柄就可以使用。
2023-08-02 22:03:57
452
原创 【RTT驱动框架分析03】- sfus flash 操作库的分析和基于STM32F103RCT6+CUBEMX的SFUS移植教程
sfus 是根据flash_table 数组内部提供信息初始化spi总线和初始化sfud_flash_chip (spi flash抽象结构)信息。由下面的信息可知,不同的spi flash擦除命令不一致,读写命令是一致的。修改flash设备列表和flash id。目前支持的spi flash的目标。main.c 文件添加如下内容。修改文件sfus_port.c。这里也是以后可以添加的。到此移植的基本条件满足。
2023-07-30 19:16:59
346
原创 【RTT驱动框架分析00】-应用层函数调用流程-串口为例
RTT内部有一个全局变量数组rt_object_container数组的数量就是 rt_object_info_type 内核对象的种类,其中包含一个RT_USING_DEVICE (设备的数据类型),数组内部的每一个变量包含一个链表,链表内部就构造了一个设备链表,rt_device_find函数就是在这个数组内部根据类型找到链表,然后在链表内部根据设备名字找到rt_device_t设备。
2023-07-29 17:20:29
341
原创 【RTT驱动框架分析01】-pin/gpio驱动分析
绑定的实质就是给pin_irq_hdr_tab 内部的对象成员赋值操作。在rtconfig.h中可能涉及需要开启gpio时钟。内部实质就是设置中断分组和中断的触发模式中断优先级。主要是存储用户注册中断处理函数。
2023-07-29 17:12:31
315
原创 极海APM32F4xx Tiny】学习笔记08-RTT 链表使用方法
极海APM32F4xx Tiny】学习笔记08-RTT 链表使用方法1.双向链表基本结构2.节点初始化—2个方法3.在某一个节点后边插入一个节点4.在某一个节点前边插入一个节点5.移除一个节点6.判定链表是不是空就是判定是不是自己指向自己7.获取链表长度已知结构体内部一个成员的地址can_dev,根据机构体类型struct ra_can和成员名字can_dev 得到结构体实例对象can的地址8.获取结构体的入口地址9.遍历整个链表10.已知成员的地址遍历整个链表
2023-07-29 17:07:04
292
原创 【N32L40X】学习笔记12-规则组+注入组+外部触发启动
使用定时器触发规则通道开始采集数据,采集完成后使用dma传输数据,并启动注入通道转换数据,注入通道转换完成后产生中断,中断中读物注入通道数据。
2023-07-29 17:06:47
312
原创 【N32L40X】学习笔记11-ADC规则通道采集+dma数据传输
当 ADC 转换的值高于模拟看门狗的高阈值或低于模拟看门狗的低阈值时,如果 ADC_CTRL1.AWDGIEN 已配置,则模拟看门狗标志 (ADC_STS.AWDG) 将 被 置 为 1 , 此 时 会 产 生 中 断。就是讲一个规则组转换完成后,又进行下一轮转换,注入组不支持扫描模式。连续采集就是采集这个规则组或注入组。规则组:每次触发后转换 n 个通道。扫描模式就是一轮接着一轮的扫描,注入组:每次触发后转换 1个通道。单次采集就是每次采集一个通道。
2023-07-22 09:27:28
865
原创 【N32L40X】学习笔记10-外部触发方式计数
也就是外部时钟源模式2此模式由 TIMx_SMCTRL .EXCEN 选择等于 1。计数器可以在外部触发输入 ETR 的每个上升沿或下降沿计数。
2023-07-22 09:27:15
617
原创 【N32L40X】学习笔记09-使用TIM2通道1或TIM5的通道2进行计数
外部计数模式只可以使用通道1和通道2,通道3通道4不可以用作外部计数模式。
2023-07-22 09:27:04
389
原创 【N32L40X】学习笔记06-串口dma空闲中断+dma接收数据
8 个可独立配置的 DMA 通道。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VchCudlf-1689952378831)(./picture/dma.png)]
2023-07-22 09:25:48
690
1
原创 【N32L40X】学习笔记04-gpio中断库
在 NVIC 中由寄存器 NVIC_IPR0-NVIC_IPR59 共 60 个寄存器控制中断优先级,每个寄存器的每 8 位又分为一组,可以分 4 组,所以就有了 240 组宽度为 8bit 的中断优先级控制寄存器,原则上每个外部中断可配置的优先级为 0~255,通过这个表,我们就可以清楚的看到组 0~4 对应的配置关系,例如优先级分组设置为 3,那么此时所有的 82 个中断,每个中断的中断优先寄存器的高四位中的最高 3 位是抢占优先级,低 1 位是响应优先级。每个位对应的中断和 ISER 是一样的。
2023-07-22 09:25:14
732
原创 【GD32F103】自定义程序库08-DMA+ADC
自定义函数库说明:将DMA先关的变量方式在一个机构体中封装起来,主要参数有使用一个枚举类型指明每个DMA绑定到那个外设来使用,枚举的最后一个元素表示DMA数量定义一个数组,将所有相关的DMA变量,填写到数组中即可,这个数组也就是后边修改的位置如果使能dma中断,dma接收数据完成产生中断。
2023-07-21 22:37:25
951
原创 【GD32F103】自定义程序库07-PWM配置库
自定义函数库说明:将pwm先关的变量方式在一个机构体中封装起来,主要参数有使用一个枚举类型指明每个pwm作为什么功能(如电机控制来使用,枚举的最后一个元素表示pwm数量定义一个数组,将所有相关的pwm变量,填写到数组中即可,这个数组也就是后边修改的位置。
2023-07-21 22:35:43
494
原创 【GD32F103】自定义程序库06-基本定时器,实现定时中断
自定义函数库说明:将TIME_BASE相关的变量方式在一个机构体中封装起来,主要参数有定时器编号定时器时钟预分频自动重载值中断编号超时中断使能超时中断回调函数使用一个枚举类型指明每个TIME_BASE作为什么功能使用,枚举的最后一个元素表示TIME_BASE数量定时器超时产生中断,调用超时回调函数,回调函数不应处理耗时任务。
2023-07-21 22:31:39
1049
原创 【GD32F103】自定义程序库05-开源库CJSON使用记录
json处理函数库CJsoncJSON.h/* Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the
2023-07-21 22:29:51
1013
原创 【GD32F103】自定义程序库04-串口空闲中断接收数据+回调函数
【代码】【GD32F103】自定义程序库04-串口空闲中断接收数据+回调函数。
2023-07-21 22:28:34
847
fal移植测试demo
2024-08-13
基于N32L406+FlashDB(时序数据库 时序数据库)+mdk5 移植教程
2024-08-01
基于N32L406MB EasyFlash参数(key-value)记录库移植
2024-07-31
N32L40x letter-shell终端裸机移植
2024-07-31
基于N32L406 Freertos letter-shell开源终端移植
2024-07-31
N32L406 移植MultiTimer教程 mdk5
2024-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅