nuoyigui9889
以微薄之力,为技术做点贡献。宇宙孕育的图标
展开
-
bldc整机调试问题记录
而HAL_UART_Transmit_()为阻塞发送函数,最后一个参数为超时参数,如果发送批量数据,超时时间到后,未发送完的将不发送。针对问题5.调试发现,while中调用的脉冲输出xx函数里面调用了500ms的延时,总共就大于了喂狗1s时间,所以重启。2.串口发送如果太快(dma发送等),即使MCU端发送完了,终端响应可能会滞后,导致收发冲突。针对问题2.分析是串口接收中断被搞死了,发送正常,所以还能启动控制。针对问题1.结合厂家回复,两种情况,要么是心跳死了,要么是过压。针对问题3.串口接收中断死了。原创 2024-05-17 21:07:14 · 26 阅读 · 0 评论 -
总结_工程中代码优化的优化问题
后面去搜索了些相关资料发现,因为中断函数的优先级比主函数要高很多,所以当中断产生的时候会优先执行中断,如果在中断里面加延时函数,会导致中断的时间过长,而主函数得不到有效的时间去执行,同时中断处理的要求是即时处理,尽快退出,加了延时就违背了这样的要求。如果是有多个中断处理的系统,中断处理调用了延时,则比它低优先级的中断在延时处理完之后都是无效的啦,这样会拖慢整个系统的执行效率。这可能会对实时性要求较高的系统造成问题。如果在中断处理程序中添加延时,会导致中断处理程序的状态被保留,可能破坏可重入性的要求。原创 2024-05-16 22:41:12 · 10 阅读 · 0 评论 -
ok_无际的九!
长文干货预警 | 单片机常用的9种软件架构!原创 2024-04-29 20:44:18 · 8 阅读 · 0 评论 -
预研项目完成后小批量验证(技术变更流程)
原创 2024-03-01 10:05:25 · 42 阅读 · 0 评论 -
DP80之抗凝称盐水秤_总结zuo灵衡和普瑞逊
电子秤类别接口配置参数抗凝剂秤(灵衡)波特率19200,数据8bit,无效验,1停止位盐水秤(普瑞逊)波特率19200,数据8bit,无效验,1停止位注:在80机上,采用485通信总线连接抗凝剂和盐水电子秤,抗凝剂电子秤的从机地址为0x01,盐水电子秤的从机地址为0x02电子秤的使用MODBUS协议来进行通信,主要使用调零指令、校准指令、读取称重指令。注:要先执行调零,再执行校准!原创 2024-01-03 15:16:12 · 483 阅读 · 0 评论 -
80机华南独山更改点算法--对每个循环显示的优化
uint16_t Hex_to_TwoBitsASCII(uint8_t data) //十六进制转换为2个字节的ASCII码,flag,0正数,1负数。//测试需更改点1,重点验证56789个循环的时候;//测试需更改点2//针对华南每个循环显示的优化;if(data_cycles<3) //采集不满3个循环的时候。#define volume_plasma_cycle 100 //更改点3。原创 2023-12-27 18:53:32 · 920 阅读 · 0 评论 -
【无标题】dp80采集机和机器人通信相关框架总结
类似于dp80,将整个过程进行了分解如下:类似于dp80,将整个过程进行了分解如下:上位机界面在进行点击操作的时候,先是通信协议的解析,解析后改变采血的控制状态如下:从callstack窗口调出,就发现了通过cnt = ptr_protocol->hal.ptr_rx_hal(ptr_protocol->hal.dev_handle, chbuf, 1024);才到下面的接收函数中的。Main中各采集阶段的命令字的来源:commond_ARM为system中的全局变量;原创 2023-11-22 18:15:26 · 66 阅读 · 0 评论 -
ok_modbus主从机例程
原创 2023-11-14 17:48:15 · 52 阅读 · 0 评论 -
***数据转换中常用的两个函数 sscanf,sprintf
if(screen_id==4) //画面ID2:文本设置和显示。\details 当文本通过键盘更新(或调用GetControlValue)时,执行此函数。\details 文本控件的内容以字符串形式下发到MCU,如果文本控件内容是浮点值,\param control_id 控件ID。\param screen_id 画面ID。\param str 文本控件内容。原创 2023-09-01 16:13:48 · 119 阅读 · 3 评论 -
算法:modus的acsii码的LRC校验位的计算
数据(2n个字符)两两组成一个16进制的数值,然后将这些数值相加,将所得加值与256求模,然后用256减去所得模值,得到的数值即为检验值(即:sum%256后取反,再加1)。数据值拆分:010508070000 -->0x01 0x05 0x0B 0xE7 0xFF 0x00。起始字符(1个字符)+数据(2n个字符)+校验值(2个字符)+结束字符(2个:回车+换行)。求和: 0x01+0x05+0x0B+0xE7+0xFF+0x00 =0x01F7;加1: 0x08+1=0x09 (校验值)原创 2023-08-25 15:10:21 · 476 阅读 · 4 评论 -
算法:数据转换处理2(云台显控)
void ItailAngleView(uint8 north, uint8 pna, uint8 length, uint8 pit,uchar *ss) // 达到精确判定效果需要云台给出停止时的停止信号,目前为简单判定。void Itail_i_to_c(uint32 data, uchar *ss, uchar type) //type == 3 经度 other 纬度。void guidView_L(uint8 h, uint8 l, uint8 clr) //h 行位置;原创 2023-08-25 10:29:11 · 234 阅读 · 0 评论 -
算法:数据转换处理1
***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/// CRC 低位字节值表。CRC循环中的索引 */低CRC 字节初始化。src : 源缓冲区。src : 源缓冲区。原创 2023-08-25 10:26:33 · 251 阅读 · 0 评论 -
终极调试利器__stm32的Event Recode(安富莱电子开发板v6手册)
终极调试利器。原创 2023-08-24 19:58:22 · 38 阅读 · 0 评论 -
★80交流驱动器通过rs485接口设置速度(附ascii表)
#手册上的通信协议及数据帧说明。##1抓取的数据及解析。原创 2023-08-23 21:16:12 · 124 阅读 · 0 评论 -
stm32读写片内flash项目总结(多字节读写tongxindu)
define ADDR_FLASH_SECTOR_9 ((uint32_t)0x080A0000) //扇区9起始地址, 128 Kbytes。#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) //扇区0起始地址, 16 Kbytes。#define ADDR_FLASH_SECTOR_4 ((uint32_t)0x08010000) //扇区4起始地址, 64 Kbytes。原创 2023-08-22 18:54:39 · 824 阅读 · 2 评论 -
*看门狗原理及注意事项
2.看门狗工作原理:假设计数值为1000,计数间隔时间为1ms,定时时间就为1s,看门狗就会在1s后执行单片机复位(计数值递减到0)。如果在计时结束前,执行喂狗操作,看门狗就会程序开始计时,比如在计数值300的位置执行喂狗,看门狗的计数值就会在1000和300间循环变化,不会导致系统复位。但当系统死机时,将无法执行正常的喂狗操作,看门狗的计数值就会一直递减到0,使系统复位,程序正常工作。3.看门狗的使用原则:看门狗的使用原则是系统正常工作时不复位,系统死机时尽快复位。原创 2023-08-22 12:07:46 · 313 阅读 · 0 评论 -
频率和占空比计算
如图,配置出来的PWM频率为f = 24M/Pre/Per Hz,即24M/12/100 = 20kHZ。占空比P = pulse/per *100%,即60/100 = 60%。若想设置PWM的占空比则在程序里面调用函数__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1,80(占空比:80%));原创 2023-08-02 21:06:16 · 527 阅读 · 0 评论 -
泵速度及离心机速度计算
(90/60)*1000=1.5khz (此处乘的1000是一圈1000个脉冲)—这样说来控制板之前设置的1hz应该不对,之前貌似测试的时候也发现示波器测试的波形一直在改变。(7500/60)*1 = 125hz(此处乘的1是一圈1个脉冲)原创 2023-08-02 21:02:54 · 71 阅读 · 0 评论