小蜜蜂笔记
嵌入式开发与物联网应用教育践行者

【STM32基础教程12】解读国赛LoRa通用库与课程小结

独家干货:本课程对应视频的B站链接:
https://www.bilibili.com/video/av87017878?p=12

课程使用开发板:XMF07A与XMF07C

XMF07A普及版:STM32F103C8T6
电路原理图
淘宝购买链接
XMF07C赛教版:STM32L151C8T6
兼容物联网技能大赛LORA/NB模块。
电路原理图
淘宝购买链接

XMF07C与物联网国赛LORA/NB模块的比较

STM32的开发工具与方式

【1】可以选择ST-LINK V2仿真器作为调试工具,在Keil开发环境下,既可以直接下载程序,又可以进行仿真调试,进行程序的单步执行、断点调试、变量跟踪等操作。如果想用10P的灰排线将仿真器与XMF07系列的开发中10简易牛角座之间连接,需要选择以下引脚定义的 ST-LINK V2仿真器 :
仿真器1脚:RST
仿真器2脚:SWCLK
仿真器4脚:SWDAT
仿真器5脚:GND
仿真器6脚:GND
仿真器7脚:V3.3
仿真器8脚:V3.3

【2】没有仿真器的情况下,利用USB线将开发板的USART1,即串口1连接到电脑,通过ST提供的代码下载软件“Flash Loader”进行ISP代码烧写,然后运行程序,功能验证。对于入门学习和简单的应用项目,该方式可以满足。

解读物联网国赛LoRa通用库

//在board.h文件中,对模块使用的I/O引脚做了定义,在60~61行处,定义了LED1和LED2的引脚。
#define LED_1             PA_3
#define LED_2             PB_8
//如果要使用XMF07C开发板进行国赛训练等,需要将LED1的引脚由PA3改为PB9。
#define LED_1             PB_9
#define LED_2             PB_8
//GPIO相关的函数,在system文件夹下,gpio.c文件中
GpioWrite( &Led1, 1 );         //向LED1的控制引脚输出高电平
GpioWrite( &Led2, 0 );         //向LED2的控制引脚输出低电平
GpioToggle(&Led1);             //翻转LED1引脚的输出电平
GpioToggle(&Led2);             //翻转LED2引脚的输出电平
//上述函数,在底层还是调用HAL库的函数HAL_GPIO_WritePin()和HAL_GPIO_Toggle()。

//关于引脚的读取,虽然有一个读取函数
uint32_t GpioRead( Gpio_t *obj );
//但本人建议使用HAL库的函数
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//OLED的驱动函数在peripherals文件的hal_oled.c文件中,主要掌握四大功能函数:
//1-显示字符串函数
void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr);
//2-显示汉字函数,主要有2个函数,功能是一样的,但使用各有特定,不一样。
//具体应用详解见视频教程。
void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no);
void OLED_ShowCHineseArray(uint8_t x,uint8_t y,char arr[32]);
//3-显示图片函数
void OLED_DrawBMP(unsigned char x, unsigned char y,unsigned char width, unsigned char hight,unsigned char BMP[]);
//4-OLED初始化函数
void OLED_Init(void);
//apps\comcom文件夹中,几个值得分析研究的文件:
//1-led_light.c:LED呼吸灯和闪烁灯相关的函数,要搞清楚了再用。
void startLedBreath();      //使能LED灯的呼吸功能
void breathLed();           //开始呼吸灯功能
void stopLedBreath();       //停止LED灯的呼吸功能

//2-adc_reader.c:A/D转换的相关函数,定义了2个通道ADC_IN0和ADC_IN2。
采样结果放在:ADC0Value和ADC2Value两个16位整型变量中。
对应的换算电压放在:VoltageValue和VoltageValue2两个float型变量中。
如果需要采样其他A/D通道的数据,建议查看system文件夹中adc.c文件的函数。

//3-key-scaner.c文件中,
有一个键盘扫描函数void keyScanner(),想用的建议完全看懂了再用,否则建议自行编写一个按键扫描函数。

//建议:其他文件也很重要,先把代码功能和逻辑结构搞清楚了,你才能好好的应用。

小蜜蜂老师的自我介绍

2001年~2005年:中国计量大学,机械设计制造及其自动化(机电一体化方向)
2005年~2008年:中国计量大学,计算机应用技术(嵌入式应用方向)
2008年至今:广东职业技术学院,从事嵌入式开发与物联网应用的科研和教育工作。

STM32开发环境下载链接:百度网盘(无需提取码)

赞(51)
未经允许不得转载:小蜜蜂笔记 » 【STM32基础教程12】解读国赛LoRa通用库与课程小结

小蜜蜂笔记 更专业 更方便 更高效

联系我们精品小店