【源码】STM32G030项目源码分享,值得参考_串口

后台回复关键词:“加群”,拉你进入开源交流群




关于今日推文

【STM32G030项目分享】

最近使用G030F6做了两个很小项目,觉得这个片子挺好用的,常规时期价格也很便宜,所以开源下我的项目源码的框架,去掉了项目逻辑。作为儿童节礼物送给女朋友吧。

【源码】STM32G030项目源码分享,值得参考_看门狗_02

第一个是项目预研时候买的光子物联的开发板,感谢,做的不错。

第二个是Lora模块(G030做串口透传)第三个是电压转电流输出模块(带校正,所以要单片机)STM32G0介绍

主流超值系列Arm Cortex-M0+ MCU,具有32 KB Flash存储器、8 KB RAM、64 MHz CPU、2x USART、定时器、ADC和通信接口,工作电压2-3.6V。

【源码】STM32G030项目源码分享,值得参考_看门狗_03【源码】STM32G030项目源码分享,值得参考_原理图_04

最终我司选择了STM32G030F6,TSSOP20,主要原因是用过F030F6,所以升级就很想当然啦。简易的原理图

【源码】STM32G030项目源码分享,值得参考_原理图_05

电源,复位电路,下载口,就能动手了,是不是很简单。。。


程序:定时器状态机

【源码】STM32G030项目源码分享,值得参考_看门狗_06

整个工程使用hal库,适配了几个常用的外设:GPIO、看门狗、定时器、串口、flash读写、spi、adc、pwm,未涉及i2c和rtc。看下我的main吧,检查定时器状态,操作不同外设,小项目足够玩了。



int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM16_Init(); MX_TIM3_Init();//PWM MX_ADC1_Init(); MX_USART1_UART_Init();// MX_SPI1_Init();//与PWM引脚复用了:PA6 flash_init(); MX_IWDG_Init(); get_cpu_id(mac); cpu_init_point(); while (1) { /*按键读取*/ if(tim_over.key_cnt>50) { tim_over.key_cnt = 0; if(key_monitor()==1) { //继电器取反 RLY_TB(); } } /*LED指示*/ if(tim_over.led_cnt>500) { tim_over.led_cnt = 0; //蓝灯取反 LEDB_TB(); //红灯取反 LEDR_TB(); } /*ADC采集*/ if(tim_over.adc_cnt>100) { tim_over.adc_cnt = 0; //读取AD g_adc_value=HAL_ADC_GetValue(&hadc1); HAL_ADC_Start(&hadc1); } /*PWM输出*/ if(tim_over.pwm_cnt>10) { tim_over.pwm_cnt = 0; //设置占空比0-2000 set_pwm_pulse(g_pwm_value); if(g_pwm_value>2000)g_pwm_value = 0; } /*串口1*/ if(tim_over.uart_cnt>=20) { tim_over.uart_cnt = 0; if(Usart1.Count>0) { //回发 usart1_send_data(Usart1.Data,Usart1.Count); Usart1.Count = 0; } }
/*看门狗超时*/ if(tim_over.iwdg_cnt>20) { tim_over.iwdg_cnt = 0; //喂狗 feed_dog(); }
/* USER CODE BEGIN 3 */ } /* USER CODE END 3 */}


资料下载提供如下资料:

  • 程序
  • 原理图
  • 工具mdk525和Keil.STM32G0xx_DFP.1.2.0


公众号后台回复关键词【G030】,发送后收到链接即可下载。


举例:关键词【步进电机】

【源码】STM32G030项目源码分享,值得参考_看门狗_07

 

【源码】STM32G030项目源码分享,值得参考_项目源码_08

关注微信公众号

【源码】STM32G030项目源码分享,值得参考_看门狗_09