- 博客(9)
- 收藏
- 关注
原创 STM32 DMA+TIM
1.最近有调试步进电机,但发现如果没有加减速带载时会启动停止会有过冲,并且步进控制盒如果不开到大电流,会出现无法启动的状态。2.因为本身步进脉冲就是通过PWM输出的,所以考虑到只要先算出一个S型的加减速表,然后通过DMA传输即可。3.DMA需求采用TIM_UP,然后往ARR里面填值即可。4.实际调试发现每次DMA传输到一定值就传输不下去了。5.开始怀疑是TIM_DMAR作祟,因为我是直接传输到ARR里面,没有使用TIM_DMAR,所以重新配置,使用DMAR,然后问题以旧。6.在线调试,观察DMA
2021-06-23 11:54:28 2139 2
原创 关于DMA的理解
DMA分为两部分,1.配置DMA的触发源,其中DMA不同通道触发源不同,类似于中断。2.配置DMA动作后,要干什么事,类似触发中断后,进入中断干什么,但是这个事只能事数据传输,但是可以往任意外设寄存器传输,比如TIM1_UP触发DMA1_CH5,可以往TIM3_CCR3里面开始送数据...
2021-06-17 16:10:37 846
原创 static对于函数
如果两个文件的当中有两个相同名字的函数,编译时会报错,如果此时在该函数前面加上static就不会,因为加上static之后声明的函数,表示只在此文件中使用,其他地方不可以使用
2021-06-17 08:59:33 112
原创 stm32标志位被意外清零
1.硬件为stm32 威纶通HMI 485通信 HMI主机2.实际运作情况 串口采用DMA发送接收 会有个缓存BUF,采用FIFO,大概2k左右3.情况每次从HMI写入数据到STM32,STM32进行存储到FRAM。HMI就与STM32通信不上4.经查是485电平一直为发送状态,并未拉低,实际发送逻辑为等待DMA发送完毕后,置等待485标志位,之后等待2ms清除刚标志位485拉低,其后通过在线调试发现,每次写入FRAM后,就会把此标志位清0,然后485就不再拉低,也就是485一直处于发送状态。5.怀
2021-04-12 12:02:07 580
原创 GD32E230 调试笔记
写在前面,本人水平有限,仅代表个人观点,不喜勿喷,右上角X,首先GD的驱动写的真烂啊,在线仿真时,连寄存器都看不了,还得到memory自己查。之前用的stm32F030,涨价比较厉害,客户要求更换为GD32E230,故此开始。1、由于E230为M23核,我用的是MDK5.11,CMSIS需要升级,没办法,更新MDK到5.33,然后发现Jlink老驱动也不支持,再更新Jlink到V6.98。此为内核升级与GD32没有关系2、对于时钟,之前的版本要求内部8M,默认的GD32E230(后面简称E23)驱动为外
2021-03-26 10:43:38 3983
原创 关于STM32F030 TIM15时钟异常 ADC不工作
同样的初始化TIM14是可以正常工作的定时1ms 1sLED翻转一次 但是TIM16则会出现异常,时间会延长的2~3秒左右查看两者的寄存器数值,如下图这个是TIM16的,我并没有置为RCR但是RCR是2,考虑到RCR是重复计数寄存器,那TIM16的时间不准应该是与RCR有关,回到上面,将时钟初始化结构体,使用之前清0,TIM16恢复正常‘关于ADC单独使用ADC_Config时,工作正常,但是如果在使用ADC_Config之前先初始化端口,就会出现ADC不工作的情况,后来同样发现前后两次A..
2020-09-21 10:00:03 1140
原创 热电偶
计算修正法:在实际应用中,热电偶的参比端往往不是0℃,而是环境温度T,这时测量出的回路热电势要小。因此,必须加上环境温度T与冰点T之间温差所产生的热电势后才能符合热电偶分度表的要求。根据连接导体和中间温度则有:E=(T,0)=E(T,T)+E(T,0)。可用室温计测出环境温度T,从分度表查出E(T,0)的值,然后加上热电偶回路热电势E(T,T),得到E=(T,0)的值,反查分度表即可得到准确的被测...
2019-11-08 15:51:29 1335
原创 关于DMA485发送
1.问题描述:正常报文如果在后面多加0xFF 如下如上图每多发一个0xFF就回复时就会被多吞一个字节2.问题查找通过在线模拟跑发现,每次收到正确数据会立即开始发送,但由于总线这时还在接收,导致多几个字节就会有几个字节发不出去。所以需要等待总线空闲。3.问题解决首先在接收到正确的报文后,等待10ms总线没有数据再过来,然后开始发送。...
2019-10-31 11:35:48 512
原创 关于使用Printf死机的原因
根据网上的方法没有使用Microlib,而是使用int fputc(int ch, FILE *f){while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); //???USART_SendData(USART3, (unsigned char)ch); //???return ch;}#pragma impo...
2019-10-14 10:25:03 2667
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人