STM32F1调试小记

2020-08-04  本文已影响0人  剑山

boot0,boot的选择

https://blog.csdn.net/c12345423/article/details/52809527

STM32的boot0,boot1有点像esp8266的那两个按键,高低不同会进入不同的功能。

第二次上传程序失败

在配置界面要把这里改了,不然下次就不能烧录了


如果已经烧不了了,可以按着reset上电或者boot0置高后按reset,然后用stm32cubeprog连接后擦除所有数据


HAL的一些操作

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

__weak void HAL_Delay(uint32_t Delay)

可以在GUI里设置上下拉什么的

写了一个驱动HX711的程序,类似SPI的通讯方式

uint32_t HX711_Value(HX711 data)
{
  uint32_t buffer;
  buffer = 0;

  while (HAL_GPIO_ReadPin(data.gpioData, data.pinData)==1)
  ;

  for (uint8_t i = 0; i < 24; i++)
  {
      HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_SET);
      delay_us(1);

      buffer = buffer << 1 ;

      if (HAL_GPIO_ReadPin(data.gpioData, data.pinData)==GPIO_PIN_SET)
     {
          buffer ++;
      }

      delay_us(1);

      HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_RESET);
  }

  for (int i = 0; i < data.gain; i++)
  {
      HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_SET);
      delay_us(1);
      HAL_GPIO_WritePin(data.gpioSck, data.pinSck, GPIO_PIN_RESET);
      delay_us(1);
  }

  buffer = buffer ^ 0x800000;

  if (buffer < data.offset)
    return 0;
  else
    return (buffer-data.offset);
}

delay_us

这个是从网上看来的,感觉不一定对。正常的做法应该是用sysTick但是我的HAL库里面SysTick_Handler()函数定义冲突,所以一直没调通。

void delay_us(unsigned int dly1)
{
    unsigned int i;
     for(i=dly1;i>0;i--);
}
上一篇 下一篇

猜你喜欢

热点阅读