×

常用的lcd断码屏驱动芯片:HT1621 三线spi串口驱动...

利用stm8l152自带的lcd驱动,驱动一个14SEG,4个Com的段码屏这次需要驱动的段码屏是联想体重秤的段码屏,由于这样的屏大多是定制的,所以需要自己在能够驱动在屏幕上显示一个任何的东西,即表示能够被驱动起来(不知道它对应的引脚是不是正确的(和自己想的))段码屏可以显示汉字...

期待你的精彩评论 加入710人围观

错误调试

关于xpt2046数据读取错误的问题

zxjy辉 zxjy辉 发表于2025-04-23 浏览540 评论0

使用spi读取xpt2046的一直错误,表现为,读取的adc数据在屏幕上分布不均匀


  1. 问题

    具体表现为:在屏幕的中心范围比较大的一圈,按下,读取到的adc值都是不变的,但是按照电阻屏的原理,这是不可能的事情,正常情况下,adc的采样值,应该在屏幕的横纵坐标上,应该是均匀的,按照一定比例的变化

stm32F407VET6--------计算浮点型,进入硬件错误

错误调试

stm32F407VET6--------计算浮点型,进入硬件错误

zxjy辉 zxjy辉 发表于2025-04-11 浏览546 评论0

通过函数传入一个指针,在函数中计算完毕,将值赋值给这个指针,发现,只要涉及小数计算的时候,直接进入硬件错误,去掉小数部分的计算,则一点问题都没有

  1. 问题代码:
    // 读取电压(单位:mV)  电压值需按公式转换:VCELL = (data[0] << 8 | data[1]) * 78.125μV 
    HAL_StatusTypeDef MAX17048_ReadVoltage(uint16_t *voltage) {
        uint8_t reg = REG_VCELL;
        uint8_t data[2];
        HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(&hi2c2, MAX17048_ADDR, &reg, 1, 1000);
        if (status != HAL_OK) return status;
        status = HAL_I2C_Master_Receive(&hi2c2, MAX17048_ADDR, data, 2, 1000);
    		*voltage = (data[0] << 8 | data[1])*78.125/1000;
        return status;
    }
关于stm32 使用keil5仿真定时器快于/慢于设定的参数

错误调试

关于stm32 使用keil5仿真定时器快于/慢于设定的参数

zxjy辉 zxjy辉 发表于2025-01-13 浏览669 评论0

如题所示,仿真定时器的时候,快于实际设定的值,原因在于设置仿真的时钟频率要正确

void MX_TIM2_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 71;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 999;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
	
	__HAL_TIM_ENABLE(&htim2);    // 启动定时器2

}