分类 STM32 下的文章

跟猫一起酸汤面系列:第79天 插队的STM32G070KBT6

偶然发现G系列似乎资源很丰富,15元入手了一块开发板,当然还有运费,不过也感觉挺超值的
插队一下吧,就一下,巴腾项目还有20天,应该问题不大吧
项目名称G0.00-LED,CubeMX会自动下载G0包,挺快的,Keil也会下载G0包,挺慢的

HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
/* Insert delay 1000 ms */
HAL_Delay(1000);

点灯很easy!也可以很省电

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(999);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
HAL_Delay(1);

好啦,睡觉!

跟猫一起酸汤面系列:第63天 三分之二

本以为是三分之二,计划腊八前,感谢球猫长久以来的支持和悉心指导,酸汤面确实挺好玩的
结果发现算错了,66天才是三分之二,还有3天,努力!
1、打开MX,新项目,L011D4,腊八后玩20脚的
2、PA4->LED、RTC WakeUp 1Hz 10 中断、SPI PA10->CSN PA9->CE、ADC Vrefint
3、Day.66、Basic、ARM、Copy Only
4、10秒亮灭,换电阻

void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)
{
  HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}

- 阅读剩余部分 -

跟猫一起酸汤面系列:第48天 驱动段式LCD(HT1621)

先用Arduino尝试驱动,由于是5V IO,似乎有些黑影,后来换STM32显示效果挺好的
通过Arduino库中的说明知道源码的地址
https://github.com/5N44P/ht1621-7-seg
通过阅读源码,基本了解HT1621的驱动方式,首先自己建立了一个Arduino文件

#define  BIAS     0x52             //0b1000 0101 0010  1/3duty 4com
#define  RC256    0X30             //0b1000 0011 0000  内部时钟
#define  SYSDIS   0X00             //0b1000 0000 0000  关振系统荡器和LCD偏压发生器
#define  WDTDIS1  0X0A             //0b1000 0000 1010  禁止看门狗
#define  SYSEN    0X02             //0b1000 0000 0010 打开系统振荡器
#define  LCDON    0X06             //0b1000 0000 0110  打开LCD偏压

#define  LCDOFF   0X04             //0b1000 0000 0100  关LCD偏压
#define  XTAL     0x28             //0b1000 0010 1000 外部接时钟
#define  TONEON   0X12             //0b1000 0001 0010  打开声音输出
#define  TONEOFF  0X10             //0b1000 0001 0000 关闭声音输出
#define  BUFFERSIZE 4

- 阅读剩余部分 -

跟猫一起酸汤面系列:第45天 获取供电电压

低功耗应用,需要时刻监控电池的状态,作为一个专题来研究
实测L011的电压可以取到,温度没有取到

/* Note: On device STM32L011, calibration parameter TS_CAL1 is not available. */
/*       Therefore, helper macro __LL_ADC_CALC_TEMPERATURE() is not available.*/

电压首先要启用ADC中的Vrefint Channel,程序中添加一个头文件stm32l0xx_ll_adc.h

uint16_t readchannel_adc1(uint32_t Channel)
{
  ADC_ChannelConfTypeDef adcConf;
  uint16_t adcData = 0;
  while (__HAL_PWR_GET_FLAG(PWR_FLAG_VREFINTRDY) == RESET) {};
  __HAL_RCC_ADC1_CLK_ENABLE();
  HAL_ADCEx_Calibration_Start(&hadc, ADC_SINGLE_ENDED );
  adcConf.Channel = ADC_CHANNEL_MASK;
  adcConf.Rank = ADC_RANK_NONE; 
  HAL_ADC_ConfigChannel( &hadc, &adcConf);
  adcConf.Channel = Channel;
  adcConf.Rank = ADC_RANK_CHANNEL_NUMBER;
  HAL_ADC_ConfigChannel( &hadc, &adcConf);
  HAL_ADC_Start(&hadc);
  HAL_ADC_PollForConversion( &hadc, HAL_MAX_DELAY );
  adcData += HAL_ADC_GetValue(&hadc);
  __HAL_ADC_DISABLE(&hadc);
  __HAL_RCC_ADC1_CLK_DISABLE();
  return adcData;
}

关键就这一句

uint16_t vdda_mV = __LL_ADC_CALC_VREFANALOG_VOLTAGE(readchannel_adc1(ADC_CHANNEL_VREFINT),LL_ADC_RESOLUTION_12B);

参考资料:
https://blog.csdn.net/weixin_33910137/article/details/92637450

跟猫一起酸汤面系列:第37天 光阴似箭 日月如梭

正好聊到单键飞梭和多媒体电脑,还有买不起的苹果、金山汉卡、超级结巴、退掉的486、价值千元的WPS奖品......

满满的回忆,也只能回忆了,30多天前的东西也已经忘得差不多了,其实一共没有几个寄存器,

1)打开STM32CubeMX
File-New Project-STM32L011D4-Start Project
2)选择串口LPUART1
Mode-Asynchronous-115200-8-N-1
3)PA4设置为LED
4)项目设置
Project Name-Day.37
Toolchain/IDE-MDK-ARM V5.27
Copy Only the necessary library files
5)GENERATE CODE
6)打开项目
Day.37\MDK-ARM\Day.37.uvprojx
7)添加启动文件
startup_stm32l011xx.s
8)写点代码

HAL_Delay(950);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(5);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);

9)Build&Download
回忆到到第二天的闪灯了

- 阅读剩余部分 -