1.开机后跳到HardFault_Handler
地址解释:
R0、R1、R2、R3:通用寄存器,通常用于传递参数和保存临时数据;
R12: 这也是一个通用寄存器,用于保存临时数据;
Returnaddress: 保存了当前函数调用后的地址,这通常是指发生异常前将要执行的指令的地址;
PSR (Program Status Register):程序状态寄存器,保存了CPSR的当前值;
LR (Link Register): 链接寄存器,保存了异常发生前的返回地址

栈空间溢出,修改局部变量大小
2.无法DEBUG
cubeide Target is not responding, retrying...
解决方法:
CUBE里面配置SYS

3.printf无输出的问题及无法输出浮点型问题
int _write(int file, char *ptr, int len)
{
HAL_UART_Transmit(&huart1, (uint8_t *)ptr, len,HAL_MAX_DELAY);
return len;
}

4.I2C读取数据时序

5.ADC1 DMA采集频率
参考:
STM32cubemax+计算普通定时器定时+ADC采样频率计算_stm32adc采样频率-CSDN博客
所以:


ADC1 DMA的采样频率为:571K左右,DMA触发中断后启动下一轮DMA转换,因此存在一定的采样抖动,DMA中断频率(采样数1024)则为558Hz,数据处理可以等间距挑选小于571K频率的任意数据点
6.串口定频传输ADC数据
理论值:

本方案采用定时器中断来计数

TIM2频率64MHz,PSC:6399,counter:10,因此TIM1中断频率为:1KHz.
理论上每秒115200串口可以传输11520字节的数据,则每100ms传输1152字节,取50%为500字节,约传输100个数据点。
最后换算数据:
