STM32F103C8T6点亮LED灯(流水灯)(IO口的初始复用功能)

2023-05-16

(1)序言
            刚开始学 STM32,当然是点亮LED灯了,从arm中的“hello word”开始着手。
            软件安装,硬件连接,前面文章已经有讲,这里不再多说。
(2)实验目的:使用STM32F10C8T6完成流水灯的功能。
(3)本次入门实验遇到的问题:
            程序写完了,灯就是不亮,调试了两个小时,终于找到原因,留个悬念,后面再说。

(4)废话不说,先上电路图:

STM32F103C8T6点亮LED灯(流水灯) STM32 第1张

图1 引脚图

(5)OK,上干货,代码:

C
#include "stm32f10x.h"  //GPIO Structure GPIO_InitTypeDef GPIO_InitStructure;   //Delay Function void mydelay_ms(int ms) {  volatile int i;  int k = ms * 2333 ;  for ( i=0; i ;  }  }   //LED Init Function void LED_INIT(void) { //Initialize System Timer SystemInit();  //使能PB3和PB4,并关闭PB3和PB4的复用功能,使IO功能生效 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);  //GPIO Structure GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4; //Chose Pin3 and Pin4 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Set Frequency 50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //暂时不懂,只知道好像是推挽式  //GPIO init GPIO_Init(GPIOB, &GPIO_InitStructure);  }  int main(void) { LED_INIT();  while (1){ //LED3 ON && LED4 OFF GPIO_SetBits(GPIOB, GPIO_Pin_3); GPIO_ResetBits(GPIOB, GPIO_Pin_4); mydelay_ms(500);  //LED3 OFF && LED4 ON GPIO_ResetBits(GPIOB, GPIO_Pin_3); GPIO_SetBits(GPIOB, GPIO_Pin_4); mydelay_ms(500); } }


(6)代码内容分析:
            首先,该代码分为三部分:延时函数,初始化函数,主函数,具体意思见代码注释。
            其次,以下几点是代码中需要注意的地方:
                  a.可以看到有两个LED灯,分别由引脚 PB3 和 PB4 控制。故给这两个引脚配置为:IO输出,高电平即可。
                  b.stm32中有很多GPIO口,分别用“GPIO+x”的形式表示,x表示具体的口,上图中PB,表示用的是GPIOB口。故代码中控制应该使用GPIOB。
                  c.GPIO_Pin_3表示对3引脚操作,同理GPIO_Pin_4表示对4引脚操作。结合GPIOB,则表示操作PB3和PB4。
                  d.GPIO_SetBits()表示设置为高电平,GPIO_ResetBits()表示设置为低电平。
(7)本次试验遇到的问题:
            一开始检查代码都正常,貌似没有错误,可是灯就是不亮,后来看手册发现原来PB3 PB4引脚都有个复用功能,系统默认使用了复用的功能,从而不再是IO输出功能,需要把复用功能关掉,才能正常输出IO信号。
上干货(图):


STM32F103C8T6点亮LED灯(流水灯) STM32 第2张

图2 stm32f103c数据手册,PB口功能
            可以看到,默认功能是JTDO和JNTRST,所以把这两个功能关闭即可。
            对应代码为LED初始化函数  LED_INIT() 中红色部分。
(8)打完收工,继续我的菜鸟成功之旅。希望有经验的大婶要是看见有错误的地方可以给予指正,感谢~~~[捂脸]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103C8T6点亮LED灯(流水灯)(IO口的初始复用功能) 的相关文章

  • Xcode如何打包Mac程序为 .dmg镜像文件

    打包Mac程序为 dmg镜像文件 获取可运行程序 按住crtl 43 b 编译程序 xff0c 编译完成之后打开Product文件夹 xff0c 选择编译好的程序 xff0c 鼠标右键点击Show in Finder 创建文件夹 在桌面新建
  • c modern approach chapter 17 中简单的复习

    一 程序remind c用动态内存实现 1 先回顾13 5中remind c的实现 xff0c 如下是自己看书以及自己的体会写成的程序 include lt stdio h gt include lt string h gt include
  • iOS Swift Crash的捕获

    iOS Swift Crash的捕获 crash捕获介绍 如果对crash捕获不太了解 xff0c 可以先参考这篇文章 本文进行Mach异常 43 Unix信号方式捕获crash NSException一般只在OC当中被捕获 xff0c 一
  • 基于TextRank的关键词、短语、摘要提取

    基于TextRank的关键词 短语 摘要提取 原创 2016年09月08日 18 20 59 标签 xff1a TextRank scala 自动文摘 3946 关于自动文摘 利用计算机将大量的文本进行处理 xff0c 产生简洁 精炼内容的
  • XCode9: iPhone is busy: Preparing debugger support for iPhone

    XCode9 iPhone is busy Preparing debugger support for iPhone Click on Window menuSelect Device and SimulatorsSelect your
  • 你会写开发文档吗

    你会写软件开发文档吗 xff1f 如今 xff0c 软件开发越来越复杂 xff0c 软件的功能也越来越丰富 而几乎所有成熟的商业软件 xff0c 都是一个开发团队齐心协力的血汗结晶 罗马不是一天建成的 xff0c 当我们震撼于Microso
  • Xcode创建子工程以及工程依赖

    Xcode创建子工程以及工程依赖 背景 由于创建一个app的时候需要引入大量的依赖三方库或者自己写的工具类 所以 考虑新建一个公共工程 每次新建项目 只需要依赖这个工程就可以了 其实说白了这个公共工程就是个静态库 开始开发 1 创建iosL
  • iOS常用第三方库

    iOS常用第三方库 转载 2017年06月13日 17 46 43 下拉刷新 EGOTableViewPullRefresh 最早的下拉刷新控件 SVPullToRefresh 下拉刷新控件 MJRefresh 仅需一行代码就可以为UITa
  • 公务员考试152分上岸经验,你同样可以复制

    公务员考试152分上岸经验 你同样可以复制 xff08 2018公考必看 xff09 来源 xff1a 步知资讯 时间 xff1a 09 26 点击 xff1a 4171261 分享 下载此文章 打印 增大字体 减小字体 单位入职培训都结束
  • 工业机器人理论图谱

    工业机器人分类 xff1a 工业机器人是应用于工业环境下的一类机器人分支 xff08 下文中的 机器人 均指 工业机器人 xff09 xff0c 从结构上可以分为 串联机器人 并联机器人 串联机器人最典型的有 平面2连杆 xff08 实际没
  • HTTP协议

    HTTP协议 常用的HTTP方法HTTP请求报文与响应报文格式常见的HTTP相应状态码常见HTTP首部字段GET方法与POST方法的区别HTTP的缺点与HTTPSHTTP优化 HTTP xff08 超文本传输协议 xff09 是一个基于请求
  • debian10安装apache2 php ftp(网站服务器)

    debian安装网站服务 debian最小安装后重启机器 设置语言 dpkg reconfigure locales 选择en US UTF 8 UTF 8 xff08 其它都不选 xff09 重启机器 修改软件安装源文件 xff08 如果
  • 正则表达式(转载)

    正则表达式的基本语法 开始和结尾位置声明 表示字符串的开始 xff0c 要匹配 本身需要使用 例如 xff1a Yao 表示字符串以 Yao 开头 表示字符串的结尾 xff0c 要匹配 本身需要使用 例如 xff1a Yao 表示字符串以
  • apache2网站设置

    apache2网站设置 我们访问一个网址是先解析成对应的IP的80端口开始的 打开apache2网站配置文件 nano etc apache2 sites available 000 default conf 可以看到 lt Virtual
  • apache用户名和密码验证

    apache用户名和密码验证 之前建立的www soft com这个网站我们给他加个访问验证 修改 etc apache2 apache2 conf nano etc apache2 apache2 conf 把 lt Directory
  • php安装swoole插件

    swoole插件 安装wget apt install wget 安装openssl apt install openssl xff08 https要用到 安装phpize apt install php7 3 dev 安装make apt
  • 五:debian安装,附加审批系统

    如果你还没读第一篇和第二篇请阅读第一篇Debian 安装和第二篇Debian 服务器安装 服务器开始安装审批系统 wget c https jiaozhiguan 1258621244 cos ap guangzhou myqcloud c
  • SpringBoot项目的出现java.io.FileNotFoundException: (系统找不到指定的路径。)

    项目场景 xff1a SpringBoot项目的出现java io FileNotFoundException 系统找不到指定的路径 项目场景 xff1a Springboot用到文件上传下载功能 问题描述 xff1a 问题 xff1a j
  • mysql创建用户报错[Err] 1396 - Operation CREATE USER failed for ‘用户名‘@‘%‘的解决方法

    项目场景 xff1a 执行mysql创建用户语句CREATE USER test IDENTIFIED BY 用户名 问题描述 xff1a 执行mysql创建用户语句CREATE USER test IDENTIFIED BY 39 用户名
  • 解决nginx提示:(code=exited, status=203/EXEC)的错误

    项目场景 xff1a 在centos7上启动nginx1 19 安装过程省略 问题描述 xff1a 编译安装一切顺利 xff0c 使用systemctl start nginx时提示如下内容 xff1a span class token p

随机推荐

  • You don‘t have permission to access this resource.

    项目场景 xff1a 访问自己的搭建的网站时apache报错You don t have permission to access this resource 原因分析 遇到如标题那个问题 xff0c 无法进行远程HTTP请求 解决方案 x
  • cmd下windows批处理bat,获取当前系统时间,生成日志文件名

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 Window系统一 范例二 方法详解1 获取日期2 获取时间3 详解 总结更多 关于Linux的写法 Window系统 常用的Win
  • Centos 7 SSH服务安全加固

    描述 禁止SSH空密码用户登录 xff0c 限制可登录用户及来源地址 加固建议 编辑文件 etc ssh sshd config xff0c 将一应配置修改 具体操作命令和步骤 1 编辑文件 etc ssh sshd config vim
  • 第18章 异常处理

    问题 xff1a c 43 43 异常处理是不是必须有try xff0c 才能有catch 下面自己验证下 方法1 xff1a 如果没有try catch语句块能不能处理异常 xff1f include lt string gt inclu
  • Centos7十五项安全加固标准配置(结合等保3)

    写在前面 xff1a 由于所有操作均涉及系统文件 xff0c 建议所有操作前备份文件及做好相关记录 一 检查系统空密码账户 身份鉴别 描述 检查是否存在空口令和root权限的账号 加固建议 对无口令并且可登录的账户 xff0c 进行密码设置
  • ThinkPHP下 自定义日志输出

    项目场景 xff1a 不想调用TP的 think Log类工具 xff0c 而是自定义日志的输出路径 文件名和内容 xff1a 解决方案 xff1a 提示 xff1a 这里填写该问题的具体解决方案 xff1a 1 首先在common php
  • Ubuntu下代理设置方法

    Ubuntu下代理设置方法 一 临时的手段 在命令行中临时设置 xff0c export http proxy 61 34 http username password 64 proxyIP proxyPort 34 xff0c 和其他临时
  • 缓解pandas中DataFrame占用内存过大的问题

    本文最后修改于2018 01 21 xff0c 文章有问题或者转载请及时联系本人 xff0c 如果对你有帮助 xff0c 别忘了点下关注 0 背景 在我们使用pandas进行数据处理的时候 xff0c 有时候发现文件在本地明明不大 xff0
  • “智医助理”噱头>实用性?详解科大讯飞医疗新布局

    关注52AI xff0c 做AI的行业领先者 QQ人工智能行业交流群 xff1a 626784247 01 以456分通过执医考试的 智医助理 xff0c 真的能够用于临床辅助诊断吗 xff1f 在国际权威的肺结节检测大赛LUNA16中刷新
  • centos8上实现私有CA和证书申请颁发

    一 创建生成密钥文件 1 用下面这条命令查看这个路径下有没有文件 如果报错没有 span class token function ls span etc pki CA 2 就递归创建出以下文件 span class token funct
  • Linux下wifi工具wpa_cli使用

    wpa cli使用 扫描查看扫描结果添加network设置SSID选择某个network查看networks使能某个network查询连接情况自动分配IP地址API Demo 扫描 root 64 demo wpa cli i wlan0
  • Ubuntu18.04安装NVIDIA驱动后,无法调节屏幕亮度

    问题 xff1a 安装N卡驱动后 xff0c 系统自带的亮度调节条失效 解决方法 xff1a 1 安装brightness controller 安装后 xff0c 会出现打开一次之后 xff0c 软件后续再也无法启动的问题 xff0c 可
  • Ubuntu18.04 U盘安装和分区方案

    一 制作U盘启动盘 1 下载官方U盘启动盘制作工具 xff1a Rufus 地址 xff1a https rufus ie 默认设置如下 xff1a 修改设置 xff1a 1 xff09 Parition scheme xff08 分区类型
  • 自己编译时候的一个警告by earlier handler for ‘std::exception’

    看自己编写的下面一段代码 include lt string gt include lt iostream gt include lt stdexcept gt include lt exception gt include lt new
  • Win10 wifi、蓝牙打不开

    问题 xff1a win10系统intel wifi6 蓝牙装完驱动 xff0c 依然启动不了设备 原因 xff1a 驱动正确安装好后 xff0c wifi和蓝牙依旧不能启动的原因在于服务没有开启 方法 xff1a 右键 此电脑 管理 双击
  • Ubuntu18.04 安装有道词典youdao-dict

    1 有道词典官网下载Ubuntu amd64 版 deb文件 http cidian youdao com multi html 2 下载到Downloads文件夹 3 安装 cd Downloads sudo dpkg i youdao
  • 启动rqt_graph,提示/opt/ros/melodic/share/pr2_motor_diagnostic_tool下的plugin.xml文件有问题

    问题 xff1a 如题 xff0c 打开plugin xml xff0c 发现是空白的 解决方法 xff1a 找到pr2的github xff0c 下载复制到 opt ros melodic share pr2 moto diagnosti
  • Ubuntu下wifi适配器、蓝牙找不到

    方法 xff1a 1 xff09 在windows系统下安装wifi驱动 xff0c 蓝牙驱动等 xff1b 2 xff09 关机 xff0c 不是重启 xff01 然后再次手动开机 3 xff09 在ubuntu中查看wifi 蓝牙的开关
  • Linux与gitee的连接

    当我们在Linux系统下完成代码后 xff0c 希望能跟在windows操作下一样 xff0c 将在编译器上写好的代码传送到远端 xff08 gitee xff09 上 这也不难 只需要按以下步骤即可完成 第一 xff1a 先在gitee上
  • STM32F103C8T6点亮LED灯(流水灯)(IO口的初始复用功能)

    xff08 1 xff09 序言 刚开始学 STM32 xff0c 当然是点亮LED灯了 xff0c 从arm中的 hello word 开始着手 软件安装 xff0c 硬件连接 xff0c 前面文章已经有讲 xff0c 这里不再多说 xf