stm32
williamlee_
提问请讲礼貌
展开
-
DMA+空闲中断不行
网上找了个例程,试了很多次都不行,最后无语住了。问题竟然是这两句话的顺序。原创 2022-12-02 14:18:57 · 231 阅读 · 0 评论 -
敏源M117 IIC CRC校验程序(X8+X5+X4+1)
/****************************************************************************** * Name: CRC-8/MINGYUAN x8+x5+x4+1 * Poly: 0x31 * Init: 0xFF * Refin: False * Refout: False * Xorout: 0x00 ****************************************原创 2022-06-20 20:13:55 · 727 阅读 · 0 评论 -
在中断里使用HAL_IWDG_Refresh()函数,可能造成硬件错误
具体原因无法深究,个人能力有限。解决方法是把喂狗的操作,加个定时器标志位,放在while里执行。切记不要再中断回调函数里面跑中断原创 2022-04-14 14:50:09 · 682 阅读 · 1 评论 -
关于轩微电子ADS1256+stm32f103开发板的一点使用小tip
已经解决的问题1.官方给的程序spi速率设置的很高,其实对于ads1256,应该设置低一点,不过无所谓啦,倒是2.ads1256的寄存器写入模式,还是应该使用连续写入,单次写入的时候,确确实实会出现pga寄存器无法设置成功的情况。未解决的问题1.基准芯片上电有漂移,目前还没分析出来原因...原创 2021-11-17 08:50:59 · 1237 阅读 · 0 评论 -
采用串口读取电流计模块的方案
1.接收函数原型HAL_UART_Receive_DMA(&UART1_Handler,rx_buff,37)2.发送函数原型HAL_UART_Transmit(&UART1_Handler,tx_buff,8,50)代码逻辑上先初始化接收DMA,然后调用发送函数。DMA配置用stmcubemx来配置,不要遗漏以下代码void DMA2_Stream2_IRQHandler(void){ HAL_DMA_IRQHandler(&hdma_...原创 2021-07-19 19:29:32 · 286 阅读 · 0 评论 -
stm32F7 spi+dma同时收发
首先还是提醒在使用dma后,应当关闭spi中断使能。之前应用过spi的dma接收和发送,但是在特定情况下想要做同时收发,得换一个函数原型:HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)目前研究的不是很深,只是用了这个函数解决了我工程实际问题,关于入口参数size,由于我收发数据包长度不一样,采用较长的包长度填入size中,没有出现问.原创 2021-04-09 15:10:40 · 1741 阅读 · 2 评论 -
学习笔记:如何将已经初始化的DMA完全消除已经初始化以及传输的内容(2)
在(1)中我提到调用HAL_SPI_DeInit可以完全消除DMA和SPI的初始化内对于结构体的赋值,之后再调用HAL_SPI_Init()就可以开启新一轮的传输。一开始确实可以,但后来出了问题。出现error的代码为:HAL_SPI_Init()下的HAL_SPI_MspInit()下的HAL_DMA_Init()出了error该函数原型为:HAL_StatusTypeDef ...原创 2019-12-10 09:04:37 · 849 阅读 · 0 评论 -
学习笔记:如何将已经初始化的HAL_SPI_Receive_DMA改变其函数入口参数(1)
我在工作中碰到了这个问题:我初始化了一个SPI+DMA的接收函数,我看到函数内部就是一个初始化过程。HAL_SPI_Receive_DMA(&hspi1, Spi_Buff, size)当函数完成调用后,DMA就一直准备接收了。想问在这过程之后,数据到来之前,我还有办法修改size参数,或者彻底清除本次接收吗我试过将spi1复位,都不能把size变量清掉我试了如下办法:...原创 2019-12-04 14:14:44 · 4196 阅读 · 0 评论 -
IIC地址的移位
从工作以来一直在调芯片。使用IIC协议配置过LT8619C,LT8618,ADV7619这些芯片,他们的IIC通信地址和芯片手册上一致,读写均正常。最近在调一块特别的IIC芯片,LMH1983。它的IIC地址经过实验,才发现需要对IIC地址向左移位一位,个人理解的是需要流出一位表示读写状态。首先I2C的从机地址时MSB先发送的,所以需要左对齐,其次I2C时序中第8位即LSB使其R/W即读写控制...原创 2019-11-14 20:49:18 · 2053 阅读 · 1 评论 -
SPI发送函数
uint8_t SPI4_ReadWriteByte(uint8_t TxData,uint8_t reg){ uint8_t Rxdata; uint8_t get_error; Write_Data[0] = 0x01; Write_Data[1] = reg; Write_Data[2]...原创 2019-11-13 19:25:39 · 1363 阅读 · 0 评论 -
应用汉明称重法计算一个32位数中有多少个1
int count_one(int x){ x = (x & (0x55555555)) + ((x >> 1) & (0x55555555)); x = (x & (0x33333333)) + ((x >> 2) & (0x33333333)); x = (x & (0x0f0f0f0f)) + ((x &...原创 2019-08-22 15:46:46 · 244 阅读 · 0 评论 -
stm32 SPI的从机中断接收
先放上代码: hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_SLAVE; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI...原创 2019-08-22 15:43:58 · 14265 阅读 · 7 评论