3. 开发环境搭建:Keil MDK安装、STM32CubeMX配置、串口调试工具
好,咱们正式开始动手了。做嵌入式开发,第一件事就是把家伙事儿备齐。我见过太多新手,一上来就急着写代码,结果环境没配好,折腾半天连个灯都点不亮。咱们别走那个弯路,一步一个脚印来。
3.1 Keil MDK安装——别小看这一步
Keil MDK,说白了就是ARM芯片的IDE。咱们用的STM32,基本都靠它吃饭。我个人习惯用MDK 5.38版本,太新的版本有时候兼容性反而麻烦。
安装步骤其实很简单:
- 去ARM官网下载MDK-ARM安装包
- 双击运行,一路Next
- 记得勾选“Add to PATH”
- 安装完成后,用管理员权限打开一次
嗯,这里有个小坑。安装完成后,你得手动装一下器件包(Device Pack)。打开Pack Installer,搜索STM32F1系列,点Install。为什么?因为Keil默认不带STM32的支持包,你不装的话,新建工程时根本找不到芯片型号。
3.2 STM32CubeMX配置——图形化真香
以前做STM32开发,都是对着数据手册一个个寄存器去配。现在好了,有了CubeMX,点几下鼠标就能生成初始化代码。说实话,我刚用CubeMX时还有点抵触,觉得这玩意儿太傻瓜了。后来真香了——它生成的代码确实规范,比自己手写的靠谱。
咱们pH传感器驱动,用STM32F103C8T6就够。配置流程如下:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 新建工程,选芯片型号 | STM32F103C8T6 |
| 2 | 配置时钟源 | HSE 8MHz外部晶振 |
| 3 | 配置ADC | ADC1,通道0,采样时间239.5周期 |
| 4 | 配置USART | USART1,波特率115200 |
| 5 | 生成代码 | 选MDK-ARM V5版本 |
这里我重点说一下ADC配置。pH传感器输出的是模拟电压信号,咱们得用ADC把它转成数字量。采样时间我习惯设长一点,239.5个周期。为什么?因为pH传感器的输出阻抗比较高,采样时间太短的话,电容充不满,测出来的值会偏小。我在项目中遇到过这个问题,当时测出来的pH值总是偏低0.3左右,后来把采样时间拉长就解决了。
3.3 串口调试工具——你的第二双眼睛
做嵌入式开发,串口就是你的眼睛。没有串口打印,你根本不知道程序跑到哪了、数据对不对。我常用的串口工具有两个:SSCOM和Putty。SSCOM更轻量,Putty功能更全。
配置串口其实就三步:
- 波特率:115200(和CubeMX里配的一致)
- 数据位:8位
- 停止位:1位,无校验
你想想看,如果波特率对不上,打印出来的全是乱码。我刚开始学的时候,就因为这个折腾了一下午。后来学乖了,每次连串口前先检查一下配置。
咱们pH传感器驱动里,串口主要用来打印ADC的原始值和换算后的pH值。代码大概长这样:
// 初始化串口
HAL_UART_Init(&huart1);
// 读取ADC值
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
uint16_t adc_val = HAL_ADC_GetValue(&hadc1);
// 打印到串口
char buf[64];
sprintf(buf, "ADC: %d, pH: %.2f\r\n", adc_val, adc_val * 3.3 / 4096 * 5.0);
HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 100);
这里有个细节要注意:sprintf在Keil里默认不支持浮点数。你得在工程设置里勾上“Use MicroLIB”,或者在编译器选项里加上--float参数。不然打印出来的pH值永远是0.00。嗯,这个坑我踩过。
3.4 环境验证——跑个点灯程序
环境搭好了,别急着写驱动。先跑个点灯程序,验证一下整个链路通不通。我一般会写个简单的LED闪烁程序:
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);
如果LED能正常闪烁,说明Keil、CubeMX、下载器、串口都没问题。这时候再开始写pH传感器驱动,心里就有底了。
- Keil MDK能正常编译
- ST-Link能识别到芯片
- 串口能收到数据
- LED能正常闪烁
好了,环境搭完了。下一章咱们就开始真正写pH传感器的驱动代码。到时候我会手把手教你如何读取传感器数据、如何做校准、如何处理噪声。别急,先把今天的内容消化掉。
公众号:蓝海资料掘金营,微信deep3321