问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32F103C8T6的智能小车硬件设计与GPIO编程入门

创作时间:
作者:
@小白创作中心

基于STM32F103C8T6的智能小车硬件设计与GPIO编程入门

引用
1
来源
1.
https://bbs.21ic.com/icview-3396550-1-1.html

本文将详细介绍基于STM32F103C8T6的智能小车硬件设计和GPIO编程。内容包括原理图、PCB设计、焊接组装以及基本的GPIO和中断处理程序。适合有一定嵌入式开发基础的读者阅读。

硬件部分

元件选型

这里给出元件列表和数量,后面每个元件使用前会给出参数等。

原理图与PCB

底板原理图需要考虑以下几个关键问题:

  • 各个模块的供电电压
  • 模块接口引脚顺序
  • 如何确定使用单片机哪个引脚

STM32F103C8T6核心板原理图(可能使用不同核心板略有差异)

PCB顶层截图,注意不同类型线的粗细和布局总线方式:

焊接

焊接时需要特别注意元件的正确安装顺序:

PCB正面:

PCB背面:

结构与组装

组装好的车体照片:

注意电机和红外对管不要插错。

测试

使用万用表蜂鸣挡测量电源引脚和GND是否短路。

软件部分

新建工程

建议选择和作者一样的版本。新建工程时需要完成以下步骤:

  • 选择芯片
  • 选择时钟源
  • 选择调试方式
  • 勾选生成独立的文件
  • 设置保存地址
  • 选择是否添加未使用库文件

GPIO编程

以点亮PC13连接的小灯为例:

配置PC13:

生成代码后,使用MDK打开工程,在BEGIN和END之间添加代码:

HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(500);

烧录程序

有两种方法可以选择:

方法一:使用DAP LINK

接线图和设置步骤略。

方法二:使用stlink

接线图和设置步骤略。

中断处理

以按键检测为例:

先看原理图:

PB4--KEY1 单片机设置下拉输入、下降沿触发
PA12--KEY2 单片机设置上拉输入、下降沿触发

开始配置:

使能外部中断,然后生成代码。

重新实现中断回调函数,编写按键检测程序:

在gpio.c 中我们编写该函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == KEY1_Pin){//判断一下那个引脚触发中断
        //这里编写触发中断后要执行的程序
        HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//切换LED GPIO状态
    }
    if(GPIO_Pin == KEY2_Pin){//判断一下那个引脚触发中断
        //这里编写触发中断后要执行的程序
        HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//切换LED GPIO状态
    }
}

把main中控制闪烁注释掉。

烧录后的现象:

按下KEY1 或者KEY2可以切换LED灯开关状态。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号