Stm32f103c8t6(proteus仿真)学习 您所在的位置:网站首页 流水转向灯怎么接线 Stm32f103c8t6(proteus仿真)学习

Stm32f103c8t6(proteus仿真)学习

2024-07-14 08:55| 来源: 网络整理| 查看: 265

目录 **一、原理图的绘制****二、代码的编写****1.新建一个工程模板****2.打开新建的项目****3.点亮一个LED灯代码****4.设置生成.hex文件****5.上传.hex文件到proteus****6.仿真运行** **三、更多功能的实现****1.点亮一排LED灯****2.点亮流水灯** **四、项目(代码+仿真)分享链接**

软件准备:keil uVsion 5 和 proteus 8.15 在这里插入图片描述

一、原理图的绘制

打开proteus8.15 -> 新建项目 -> 改名 -> 一直next 鼠标右键 -> 放置 -> 元件 -> From Libraries 在这里插入图片描述 搜索Stm32 -> 选择stm32f103c8 在这里插入图片描述 画出点亮一个LED灯的原理图 在这里插入图片描述 提示,各元器件搜索: 主控芯片:stm32 电阻:res LED灯:led 鼠标右键 -> 放置 -> 元件 -> From Libraries 在这里插入图片描述 地和VCC 在左侧工具栏 在这里插入图片描述

二、代码的编写 1.新建一个工程模板

这里采用正点原子提供的工程模板 复制工程模板,改名为1.点亮一个LED灯 在这里插入图片描述 工程模板下载链接: 链接:https://pan.baidu.com/s/14c7aIfUNBSR0quoEuqbN5g 提取码:sfdh

2.打开新建的项目

在项目文件夹 -> USER下的.uvprojx 在这里插入图片描述 点击即可通过keil_v5打开

3.点亮一个LED灯代码

led.c文件的内容

#include "led.h" #include "stm32f10x.h" void LED_Init(void) { //声明一个结构体,名字是GPIO_InitStructure GPIO_InitTypeDef GPIO_InitStructure; //使能GPIOC的时钟,ENABLE代表使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//GPIOC //设置引脚为推挽输出Out_PP GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //定义引脚为哪一号引脚,GPIO_Pin_13就是13号引脚 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; //设置引脚的速度50MHz GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //初始化GPIO,初始化哪个引脚就对应哪个 GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化GPIOC,所以引脚对应PC13 GPIO_SetBits(GPIOC,GPIO_Pin_13); //PC13引脚拉高电平 } GPIO_SetBits(GPIOC,GPIO_Pin_13); 为设置PC13为高电平 GPIO_ResetBits(GPIOC,GPIO_Pin_13); 为设置PC13为低电平

led.h头文件的内容

#ifndef __LED_H //头文件的格式 #define __LED_H void LED_Init(void); //函数的声明 #endif

main.c的内容

#include "stm32f10x.h" #include "led.h" //led的头文件 #include "delay.h" int main(void) { delay_init(); LED_Init(); while(1){ //主循环 //由原理图,拉低电平-> LED灯亮 GPIO_ResetBits(GPIOC,GPIO_Pin_13); delay_ms(500); //拉高电平-> LED灯灭 GPIO_SetBits(GPIOC,GPIO_Pin_13); delay_ms(500); } } 4.设置生成.hex文件

魔术棒-> Output -> 勾选Create HEX File -> ok 在这里插入图片描述 编译运行代码 在这里插入图片描述 0错误,0警告 在这里插入图片描述

5.上传.hex文件到proteus

打开proteus 双击芯片->选择Program File的路径 在这里插入图片描述 选择刚刚生成的.hex文件打开 在这里插入图片描述

6.仿真运行

点击左下角运行 在这里插入图片描述 需要暂停运行也是在左下角 注意:只有停止运行才能修改原理图 在这里插入图片描述

三、更多功能的实现 1.点亮一排LED灯

在这里插入图片描述 led.c文件新增几个引脚 led.c文件的内容:

#include "led.h" #include "stm32f10x.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//GPIOC GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure); //PC13、PC14、PC15引脚拉高电平 GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); }

led.h头文件内容不变 main.c文件:(三个灯一起亮、一起灭)

#include "stm32f10x.h" #include "led.h" #include "delay.h" int main(void) { delay_init(); LED_Init(); while(1){ //效果是三个灯一起亮、一起灭 GPIO_ResetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); delay_ms(500); //上面x|x|x 和下面分开写的效果是一样的 GPIO_SetBits(GPIOC,GPIO_Pin_13); GPIO_SetBits(GPIOC,GPIO_Pin_14); GPIO_SetBits(GPIOC,GPIO_Pin_15); delay_ms(500); } }

在这里插入图片描述

2.点亮流水灯

main.c文件:(流水灯)

#include "stm32f10x.h" #include "led.h" #include "delay.h" int main(void) { delay_init(); LED_Init(); while(1){ //效果是三个灯轮流亮(流水灯) GPIO_ResetBits(GPIOC,GPIO_Pin_13); delay_ms(500); GPIO_SetBits(GPIOC,GPIO_Pin_13); GPIO_ResetBits(GPIOC,GPIO_Pin_14); delay_ms(500); GPIO_SetBits(GPIOC,GPIO_Pin_14); GPIO_ResetBits(GPIOC,GPIO_Pin_15); delay_ms(500); GPIO_SetBits(GPIOC,GPIO_Pin_15); } }

在这里插入图片描述

四、项目(代码+仿真)分享链接

百度网盘 链接:https://pan.baidu.com/s/1pcVtAcER2mAwnQnyRL3aXQ 提取码:p8q4



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有