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--);
}
网友评论