基于STM32F103C8T6以USB to TTL 和 ST-LINK V2两种方式点亮LED小灯泡

这篇具有很好参考价值的文章主要介绍了基于STM32F103C8T6以USB to TTL 和 ST-LINK V2两种方式点亮LED小灯泡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、硬件设备

        所需设备:

                1、STM32F103C8T6;

                2、USB 转 TLL 或 ST-LINK V2 01-0;

                3、杜邦线若干;

                4、面包板1个;

                5、USB安卓数据线(使用USB 转 TLL需要用到);

 二、工程建立

        1、首先需要建立一个STM32F103C8T6的keil工程。

        可以根据以下链接结合实际情况建立。

        (74条消息) STM32新建keil工程具体步骤(详细)_爱学习的小王呀的博客-CSDN博客

 三、环境配置&编写代码

        1、环境配置和代码可以参考以下两个链接:       

        (1):(74条消息) 用STM32F103C8T6制作流水灯_甜心猛男的博客-CSDN博客_c8t6烧程序时需要改变跳线帽位置吗     

        (2):(74条消息) STM32F103寄存器方式点亮LED流水灯_Melody crush的博客-CSDN博客_stm32f103寄存器led点灯

        这里简单给出几张个人认为需要注意的点:

        先点击stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件        

点击Device

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

 配置红框内容 ,并点击Debug(如果使用USB 转 TTL则不用勾选蓝色框;如果使用ST-link做的则要勾选)stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

 点击上图蓝色框里的Setting,选择Flash Download,进行以下配置。(如果不选Reset and Run则每次烧录到板上后都需要按一下板上的Reset按键才会看到现象。选不选看个人,影响不大)

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

 2、编写main函数

//头文件
#include "stm32f10x.h"
#include "GPIOLIKE51.h"

//函数声明
void LED_Init(void);
void RCC_Configuration(void);

//=============================================================================
//文件名称:Delay
//功能概要:延时
//参数说明:nCount:延时长短
//函数返回:无
//=============================================================================

void Delay(uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}


//=============================================================================
//文件名称:main
//功能概要:主函数
//参数说明:无
//函数返回:int
//=============================================================================
int main(void)
{
	

	RCC_Configuration();				//开启GPIO时钟
		
	LED_Init();                         //初始LED引脚的GPIO口
    while (1)
		{
			PAout(1)=0;					//1为灭
			Delay(0xfffff);             //延时
			Delay(0xfffff);	
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			PAout(1)=1;

			PBout(12)=0;					//0为亮
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			PBout(12)=1;

			PCout(15)=0;					
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			Delay(0xfffff);
			PCout(15)=1;

    }
}


//=============================================================================
//文件名称:RCC_Configuration
//功能概要:开启GPIO时钟
//参数说明:无
//函数返回:无
//=============================================================================

void RCC_Configuration(void)
{
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//开启GPIOA时钟并使能
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);		//开启GPIOB时钟并使能
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);		//开启GPIOC时钟并使能
}



//=============================================================================
//文件名称:LED_Init
//功能概要:LED引脚的GPIO初始化
//参数说明:无
//函数返回:无
//=============================================================================

void LED_Init(void)
{
		GPIO_InitTypeDef GPIO_InitStruct;												//声明GPIO初始化结构体,声明要在最前面

		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//开启GPIOA时钟并使能

		
		GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;					//定义GPIO初始化结构体的GPIO引脚
		GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;			//定义GPIO初始化结构体的GPIO输出模式
		GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;		    //定义GPIO初始化结构体的GPIO速率

		GPIO_Init(GPIOA,  &GPIO_InitStruct);					//初始化GPIO

	

		
		GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;			    	//定义GPIO初始化结构体的GPIO引脚
		GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;			//定义GPIO初始化结构体的GPIO输出模式,推挽输出模式
		GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;		    //定义GPIO初始化结构体的GPIO速率

		GPIO_Init(GPIOB,  &GPIO_InitStruct);					//初始化GPIO

		


		
		GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;					//定义GPIO初始化结构体的GPIO引脚
		GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;			//定义GPIO初始化结构体的GPIO输出模式,推挽输出模式
		GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;			//定义GPIO初始化结构体的GPIO速率

		GPIO_Init(GPIOC,  &GPIO_InitStruct);					//初始化GPIO

		
}

点击下面两个任意一个编译

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

确保0错误,0警告。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

四、硬件连接

        1、USB 转 TTL 方式

                (1)、将STM32F103C8T6插入面包板,注意!一定要插深一点!确保C8T6的引脚能和面包板进行导电!!(笔者因为这个小细节没注意,排查了好几天的代码、硬件,甚至以为是笔者焊接不到位,重新把板的引脚焊过...最后排查出来是面包板和开发板的引脚接触不紧密没导上电...血的眼泪...)

                (2)、USB 转 TLL硬件插上电脑USB端口。

                (3)、USB to TTL硬件和STM32F103C8T6连线。

                        跳线帽连接方式:UBOOT0 用1;UBOOT1用0

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                        USB转TTL连接方式:用杜邦线将USB to TTL的GND连开发板的GND、3.3V连3.3V、RXD连接PA9TXD连接PA10

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

注意,下图此处有小红灯亮了,说明RXD连接PA9引脚连接可以导上电;如果是不亮的,则要检查一下是否会导电。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

LED小灯连接方式:根据代码设定的GPIO端口,把LED小灯插到对应的引脚即可。笔者插的是A1、B12、C15引脚。注意!小灯泡会有高低脚,高的一侧要插正极,低的一侧插负极。

接地连接方式:用杜邦线把开发板上的G和面包板两侧的蓝色负极行连接起来。

 最终连接效果:

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                (4)、打开设备管理器,确保有USB-SERIAL CH340(COMx)(如果没有显示或显示未知设备就去安装一个CH340的驱动)

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                 (5)、打开FlyMCU,确保刚才端口是空闲状态(一般来讲,设备管理器识别的COM口号和FlyMCU的COM口号是一致的。这里解释一下为什么这里的COM口号和上面不同,因为笔者没有当时的截图,下面这张图时后来写博客时补的图...原来的端口电脑经常识别有误,所以插了另一个端口。)

                     stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                 (6)、进行以下配置,并点击三个小点...处,选择工程编译生成的.hex文件,点击开始编程。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                 (7)、别忘记按板上的Reset键,按了之后才会有反应。

 *常见问题:

        1、未知USB设备(设备描述符请求失败)

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

       2、FlyMCU的Port端口显示占用

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

解决方法:右键卸载这个设备,再重新插拔USB 转 TTL,多试几次。笔者怀疑是USB转TLL和拓展坞的USB口接触不好导致的。

        3、Fly MCU 出现无法打开串口

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

原因:说明电脑没有识别到USB转TTL的端口,请确保USB转TTL已经插上。如果确认插上,说明还是接触不好的问题。

解决方法:重新插拔USB 转 TTL,多试几次。(如果有条件,可以尝试更换一个TTL)

        4、无法打开串口COMx:Not Support Setting(bps/byte size etc)!

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

原因:RXD连接PA9没有成功,需要检查一下PA9引脚是否导电,可以看USB转TTL上的小红灯有没有亮,没亮就是没导上电。

解决方法:1、更换TTL;2、更换杜邦线;3、插拔USB转TTL;4、重新焊接PA9引脚;5、如果之前烧录过其他程序,则尝试一下按Reset后再试一次。

        

       2、ST-LINK V2 01-0方式

               (1)、将STM32F103C8T6插入面包板,注意!一定要插深一点!确保C8T6的引脚能和面包板进行导电!!

                (2)、ST-LINK V2仿真编程器插上电脑USB端口。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                (3)、ST-LINK V2仿真编程器和STM32F103C8T6连线。

                        跳线帽连接方式:UBOOT0 用0;UBOOT1用0

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                        ST-LINK和电脑连接方式:(开发板上的DCLK就是ST-LINK上的CLK)

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                LED小灯连接方式:根据代码设定的GPIO端口,把LED小灯插到对应的引脚即可。笔者插的是A1、B12、C15引脚。注意!小灯泡会有高低脚,高的一侧要插正极,低的一侧插负极。

                接地连接方式:用杜邦线把开发板上的G和面包板两侧的蓝色负极行连接起来。

 连接最终效果:

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

        (4)、打开设备管理器,确保有STM32 STLink (如果没有显示或显示未知设备就去安装一个STLink的驱动)

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

        (5)、打开Keil,在确认编译过、0错误,0警告后点击LOAD下载按钮。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

                显示下载成功信息。

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

        (6)、如果在Debug的Setting勾选了Reset and Run则直接可以看到灯亮现象;如果没有勾选Reset and Run则需要再按一下开发板上的RESET按键才可以观察到灯亮现象。

五、实验效果

        1、USB to TTL:

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

        2、ST-LINK V2 :

stm32f103c8t6 连接 st-link,stm32,单片机,嵌入式硬件

六、写在最后

        感谢文中所引用博客的作者提供了思路和帮助,再次感谢。文章来源地址https://www.toymoban.com/news/detail-779324.html

到了这里,关于基于STM32F103C8T6以USB to TTL 和 ST-LINK V2两种方式点亮LED小灯泡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32项目设计:基于stm32f103c8t6智能电梯系统

    资料链接:待更新~ 哔哩哔哩视频链接:https://www.bilibili.com/video/BV17D4y1V7HG/?vd_source=e5082ef80535e952b2a4301746491be0(bilibili:化作尘my) 资料链接:https://pan.baidu.com/s/1qObK7KBl50RmFrAtoX12kw 提取码:iih4 实物链接:https://m.tb.cn/h.5h5mDXI?tk=MdxLWYHgKnz CZ0001 1、OLED显示当前楼层、目标楼层等信息

    2024年02月03日
    浏览(57)
  • 基于STM32F103C8T6ADC检测交流电压

    上篇文章写了硬件部分的实现思路,通过采样电阻的到小电压后经过二级放大电路得到单片机可处理的交流电压,此文介绍了如何采用单片机采集交流电压以及stm32ADC外设的使用。首先是硬件电路部分。  电路没有采用核心板,而是直接将芯片焊接到主板上,采用type-c接口供

    2024年02月12日
    浏览(56)
  • STM32f103c8t6模板的搭建-基于正点例程

           笔者认为正点编写的官方例程结构较为整洁,可以便于后期的例程开发,如果开发者对于项目开发中芯片要求较高的话,有很多人会选择正点的开发板,但是通常大多数是stm32初学者会选择用价格更为便宜的c8t6来进行学习,而正点选用的教程开发板大多都是些RC、ZE、

    2024年02月06日
    浏览(68)
  • 基于STM32F103C8T6的超声波测距应用

    #一、超声波HC_SR04简介 #二、超声波工作原理 #三、超声波测距步骤 #四、硬件接线 #五、项目代码 一、超声波HC_SR04简介 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有四个引脚:VCC、GND、Trig(触发)、Echo(回应) 工作电压与电流

    2024年02月03日
    浏览(47)
  • 基于stm32f103c8t6的fft频率计

    之前项目中需要用到正弦信号的频率测量,也参考了几个大佬的博客(链接如下),但可能是由于stm32的型号不匹配,虽然也在网上查了一些需要修改的地方,但结果一直不太对,后来经过自己摸索结果终于对了,在这里给大家分享下,具体原理不在赘述。 参考的部分大佬博

    2024年02月14日
    浏览(74)
  • 基于STM32F103C8T6的HC-06蓝牙通信

    如果朋友们 遇到了如下问题 ,可以仔细借鉴本文章和另一篇专门讲解 蓝牙通信问题 的文章,一定能够解决你在蓝牙通信时遇到的诸多困难 1.在调试蓝牙模块AT指令时无返回值 2.身边 无USB转TTL模块 可以直接调试蓝牙模块(本人就是由于无模块花了了整整一天才调试成功)

    2024年02月03日
    浏览(69)
  • HX711压力传感器(基于STM32F103C8T6)

    HX711模块是我们目前比较常见的压力传感器模块,主要的作用是用来做压力检测,重量监测等等。博主的这篇博文主要实现功能为,在对重量或者压力进行监测的同时,可以累加或者清零数值,在此基础上就可以对比如饮水量进行统计等等。 HX711模块是市面上比较常见的模块

    2024年02月11日
    浏览(58)
  • 基于stm32f103c8t6的定时器详解(持续更新)

    先声明:stm32f103c8t6中没有基本定时器、只有TIM1-TIM4:分别是高级定时器和通用定时器(对照下图请自行阅读stm32f103x的datasheet) 1、定时器功能:定时、输出比较、输入捕获、互补输出,其中基本定时器只有定时功能、通用定时器只没有互补输出功能、高级定时器具有所有功能

    2023年04月24日
    浏览(70)
  • [STM32F103C8T6]基于stm32的循迹,跟随,避障智能小车

    目录 1.小车驱动主要是通过L9110S模块来驱动电机 motor.c 2.我们可以加入串口控制电机驱动(重写串口接收回调函数,和重定向printf) Uart.c main.c  3.点动功能 uart.c main.c 为什么使用的是HAL_Delay()要设置滴答定时器的中断优先级呢? 4.小车PWM调速,  6.跟随功能 7.避障功能 超声波测距

    2024年02月13日
    浏览(57)
  • 基于stm32f103c8t6及AS608-----指纹锁项目

              博主纯小白, 本文适合于初学者,大佬还请勿喷,欢迎提出意见,有纰漏之处将及时纠正。 在浅学了stmf103c8t6后,想着依据现在所拥有的知识和能力做一个小项目。 注:工程代码在文章末尾。 掌握C语言基础....这个最基础啦... 接触过类似单片机,稍微看得懂芯片

    2023年04月09日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包