STM32CubeMX+ADC+蓝牙串口实验

导航:stm32教程传送门🧭🏔🌋🛤🏞🏜

1.0前言

接触STM32单片机逐渐深入,通常从简单按键和LED控制着手,下面我们将*凭借STM32CubeMX和keil5开发学习stm32黑色核心板,通过ADC采集和蓝牙串口打印输出实验!*

2.0示例详解

2.1硬软件选择

硬件平台软件平台
黑色核心板1块keil v5
JDY-30 蓝牙1块stm32cubemx
光敏电阻1颗
面包板1块
220Ω电阻1颗
杜邦线若干

keil v5安装教程:https://www.bilibili.com/video/BV1q4411d7RX?p=1
stm32cubemx:https://www.bilibili.com/video/BV1q4411d7RX?p=2

2.2实验原理

使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。
光敏电阻接PA0,JDY-30 蓝牙RX_TX分别接PA9_PA10,板载PB12推挽输出。
在这里插入图片描述

3.0操作流程

3.1配置STM32 Cube MX工程

  • 双击桌面STM32CubeMX工具,然后在CubeMX中菜单 File中点New Project ;

  • 在新弹出的界面中的搜索框中输入 “stm32f103c8” ,并双击右侧栏中列出的STM32F103C8选用该芯片;

  • 配置系统伏仿真调试接口, 在System Core 目录下单击SYS选项,将其中的Debug选项选为Serial Wire, 此时PA13 PA14引脚会被占用;

  • 配置系统时钟源,在System Core 目录下单击RCC选项,将其中的High Speed Clock( HSE )选项选为Crystal/ceramic resona…, 此时PD0 PD1引脚会被占用;

  • 配置PB12为GPIO_Output,作为ADC采集指示;

  • 配置Analog选ADC1,模式选IN0,NVIC seting 选Enable ,因此GPIO PA0 随之配置好;

  • 在Connectivity中选择USART1,模式采用Asynchronous异步通信,波特率是9600,我们只需要发送信息,采用通常的阻塞式即可,其他默认;

  • 在这里插入图片描述

  • 配置代码生成,工程界面切换到Project Manager 界面,在界面左侧单击Project 项,命名ADC01_uart,IDE采用MDK-ARMV5,在界面左侧单击Code Generator项,将其设置成如下图所示( 只拷贝所需文件到工程,为每个接口生成独立的初始化头文件和源文件,将所有未使用的引脚设为模拟输入)。

  • 生成代码,单击工程界面中”GENERATE TOOL” 开始生成代码,代码生成后弹出是否打开工程对话框,单击“Open Project”打开创建的工程,即配置工程完成接下来是keil v5开发和调试。

3.3keil v5开发

  • 修改部分代码,在代码工程(MDK/keil)中的 main.c 中 man函数中主要包含两个函数UR1_Send_Info()//串口1发送指令函数和ADC0_Get_Value()//ADC0采用轮询获得采样数据函数

#include "main.h"
#include "adc.h"
#include "usart.h"
#include "gpio.h"

void SystemClock_Config(void);

#include "stdio.h"//标准输入输出头文件
#define LED1_ON  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_SET)
#define LED1_OFF  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_12,GPIO_PIN_RESET)//宏定义板载LED开与灭

uint16_t ADC_Value,ADC_Volt;//ADC_Value和ADC_Volt分别是ADC采集和电压计算
uint8_t str_buff[64];//发送缓冲区

void UR1_Send_Info()//串口1发送指令
{
	sprintf((char*)str_buff,"ADC_Value: %d,ADC_Volt: %d.%d%d",ADC_Value,ADC_Volt/100,(ADC_Volt%100)/10,ADC_Volt%10);
	HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),1000);
}

void ADC0_Get_Value()//ADC0采用轮询获得采样数据
{
	HAL_ADC_Start(&hadc1);//ADC1开始采集
	LED1_ON;
	if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK)//判断ADC采集是否完成
	{
		ADC_Value=HAL_ADC_GetValue(&hadc1);//读取ADC的值
		ADC_Volt=ADC_Value*330/4096;//ADC电压转换
	}
	UR1_Send_Info();
	LED1_OFF;
	HAL_ADC_Stop(&hadc1);//停止ADC采样
	
}

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_USART1_UART_Init();
  while (1)
  {
		ADC0_Get_Value();
		HAL_Delay(500);
  }
}

  • 编译该工程,确认代码书写正确并且符合控制要求;
  • 烧录代码,完成下载操作;
  • 到此为止,所有准备工作已经配置完成,进入调试环节,打开手机蓝牙助手,连接JDY-30 蓝牙,就可以实时监测光敏电阻的波动,调节外围光线,调试出合理的触发条件,最常见就是路灯的智能控制系统

4.0 总结

  • 本篇凭借STM32CubeMX和keil5开发学习stm32黑色核心板,通过ADC采集和蓝牙串口打印输出实验!。主要难度在控制原理以及项目移植开发,值得新手一试!!!😃😃😃
  • 在以后的博文中我们将学会用stm32常用传感器和执行器从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力
  • 工程文件
  • 参考材料
STM32CubeMX中使用蓝牙串口接收数据的步骤如下: 1. 首先,确保你的STM32单片机已经配置了蓝牙模块,并且串口已经正确连接。 2. 打开STM32CubeMX软件,选择你的STM32型号,并创建一个新的工程。 3. 在"Pinout & Configuration"选项卡中,选择你要使用的串口引脚,并将其配置为UART模式。 4. 在"Configuration"选项卡中,找到"USART"配置,并启用蓝牙串口的接收功能。 5. 在"Project"选项卡中,生成代码并导入到你的开发环境中。 6. 在你的代码中,使用中断方式来接收蓝牙串口的数据。你可以在空闲中断函数中设置一个接收完成的标志位,以便在主程序中检测数据是否接收完成。 需要注意的是,蓝牙串口通信标准是TTL电平标准,如果你需要使用RS-232标准,则需要使用电平转换芯片。此外,根据你的通信需求,你可以选择单工通信、半双工通信或全双工通信。 希望以上信息对你有所帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [STM32CubeMX配置串口——HAL+DMA+串口空闲中断](https://blog.csdn.net/Myself_study/article/details/122745423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32CubeMX串口通讯](https://blog.csdn.net/qq_63922192/article/details/128119933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2345VOR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值