嵌入式
koukou_1538725213
专注电机,云台
展开
-
RS422一主多从MAX3490
然而从机发送端TX+TX-波形就有很大的问题,TX+TX-波形没有了交会点,经分析原理应该是TX端几个从机电平相互干扰了,基于这个怀疑,我们在TX端加了二极管,使信号单相导通不至于相互干扰。基于此,我们又想了一个新的方案:想办法让TX+TX-没办法交会的电平交会起来,那么就是TX+加上拉,TX-加下拉。然后经过原理分析,发现二极管只管正向导通,不管下降沿,就是通信速率太快了二极管没办法传递信号了。这下就有了交会了,经分析max规格书,只要交汇处电平宽度有0.2V,就能解析信号,至此,RS422告一段落。原创 2024-05-14 21:22:39 · 806 阅读 · 3 评论 -
STM32F4配置内部时钟(HSI)
STM32F4配置内部时钟半年多没更新了,今天配置F4的时候内部时钟问题整了2个小时,记录下这个坑。有些板子由于没有贴外部晶振,所以代码运行起来的时候时钟就会出问题,本来配置的中断是1ms实际跑起来确只有10ms,严重出错了。这种问题解决办法就是配置使用内部时钟HSI本例程只针对STM32F4,其他单片机并未测试过。/** * @brief Configures HSI as the System clock source **/ void HSI_SetSysClock()原创 2022-03-21 17:17:32 · 2770 阅读 · 0 评论 -
普通定时器输出互补PWM带死区
普通定时器输出互补PWM带死区一般来说三相半桥电路需要互补PWM驱动,而且互补PWM需要带死区,死区的大小跟管子的性能参数有关。公司为了省成本,在云台上把电机驱动芯片替换成三相半桥。用6个MOS驱动无刷电机。这下就需要用到互补PWM了。然后选型的单片机只有一路高级定时器tim1,另外一个电机的PWM驱动分别是tim3,tim4.不同的定时器怎么实现互补PWM而且带死区呢。1、定时器主从功能2、定时器中心对齐模式3、tim3使用PWM1模式,tim4使用PWM2模式4、输出PWM时占空比预留死区原创 2021-08-06 15:27:41 · 3022 阅读 · 0 评论 -
串口仿真数据正常,不接仿真数据异常
今天遇到一个奇怪的问题,折腾了大半天。具体问题如下:串口我用的DMA空闲中断接收,接仿真器仿真时接收数据完全正确,没有异常。但是仿真器不接的时候,正常外部供电串口接收数据就异常了,经过jscope查看数据,是数据错位了。后来分析如下:1、数据发送接收太过密集?经证实不是这个原因后来发现我接收的数组跟发送的字节数刚好相等,然后我就怀疑是不是这个原因导致的。然后把接收数组改大,问题解决...原创 2021-08-06 15:10:59 · 903 阅读 · 0 评论 -
keil c语言变量突然的NAN
NaN,是Not a Number的缩写,在IEEE浮点数算术标准(IEEE 754)中定义,表示一些特殊数值(无穷与非数值(NaN)),为许多CPU与浮点运算器所采用。导致变量NAN的原因我大概总结如下,可能还有写情况没想到没列举出来:1、除数为零,例:0/02、负数开根号,例:sqrt(-1)3、log运算中出现负号4、三角函数超出定义域范围,例:asin定义域【-1,1】.tan定义域(-pi/2,pi/2)等...原创 2021-05-15 08:52:02 · 3811 阅读 · 0 评论 -
keil的jlink重新选择芯片识别
keil仿真的时候jlink需要选择对应的芯片:类似这个,一旦点了这个之后在工程里卖弄就会多两个文件如果第一次选择的芯片不对,需要重新选择,那么就把上图中的JLINKLOG.TXT和jlinksettings.ini删除即可,然后重新进入jlink配置即可出现第一张图中画面...原创 2021-03-16 13:56:44 · 6449 阅读 · 0 评论 -
MM32 PA13 PA14复用普通GPIO
MM32 PA13 PA14复用普通GPIO最近一个项目为了节省成本,选用了一个脚位比较少的单片机。所以需要用到SWD烧录引脚作为普通IO口用。接下来介绍一下具体怎么用:MM32复用PA13 PA14跟STM32不一样,MM32如下:PA13、PA14初始化前需要做一段时间的延时,防止下次烧录无法正常烧录;PA13、PA14初始化后需要复用GPIO口,复用参考数据手册的复用表:普通IO口复用直接选上表中空的就行了。...原创 2021-03-01 16:29:18 · 976 阅读 · 4 评论 -
单片机PWM方向
单片机PWM奇怪方向问题最近配置GD32F130单片机的PWM 的时候遇到一个很奇怪的问题,就是第一次烧录程序时PWM输出为反向(占空比设置10%,输出90%),后面单片机正常上电时PWM输出正向(占空比设置10%,输出10%),这个问题令人匪夷所思。/* CH2,CH3 and CH4 Configuration in PWM mode */ TIMER_OCInitStructure.TIMER_OCMode = TIMER_OC_MODE_PWM1; TIMER_OCIn原创 2020-12-15 11:22:41 · 952 阅读 · 0 评论 -
FreeRTOS移值
FreeRTOS移值首先需要获取源码包啊:http://www.freertos.org/到官网下载。选出一般常用的几个文件:把文件拷贝整理到一个文件夹FreeRTOS.然后把这个文件夹复制到STM32工程里面。keil添加代码文件:添加好之后,keil project添加.C文件到此编译一次。编译过程中会出现报错:未发现FreeRTOSConfig.h这个文件,到官网找一下这个.h,然后复制到自己的工程,我的建议是复制在FreeRTOS这个文件夹里面,方便以后移值。再次编译,还是有原创 2020-05-13 15:46:13 · 340 阅读 · 0 评论 -
嵌入式heap_size大小设置
嵌入式heap_size大小设置一般的单片机在启动文件都有一个heap_size大小配置:以STM32为例,这个数值设置的大,会导致后面跑裸机的时候容易出现内存报错,如果没有用到标准库的malloc,这个值是可以设置为0的。这样跑裸机就可以片内有多少SRAM就用多少SRAM。...原创 2020-05-12 14:54:13 · 4832 阅读 · 1 评论