首页 > 其他分享 >STM32f103c8t6 学习

STM32f103c8t6 学习

时间:2023-02-24 11:33:12浏览次数:39  
标签:输出 高电平 STM32f103c8t6 低电平 学习 IO 寄存器 输入

学习stm32f103c8t6最小系统板+keil5的使用,学习江科协记录所用

1.GPIO的操作

GPIO的输入和输出模式

8中输入输出模式
img

对于8中模式从电路上理解
img
整个电路上半部分是IO作为输入、下半部分是IO作为输出

考虑输入情况 浮空输入、上拉输入、下拉输入、模拟输入

1.最右边IO引脚接着两个保护二极管,作用是对于输入电压进行限幅,输入电压比Vdd还高,二极管会导通,输入电压比Vss还低,二极管也会导通,避免过高过低的电压对内部电路造成影响。
2.再往左上边看,有上拉电阻和下拉电阻,开关是可以通过程序配置的,上面关闭导通,下面断开就是上拉输入模式,反之下拉输入模式,两个都断开则是浮空输入模式。具体的作用是给输入提供一个默认的电平的,如果IO什么都不接,输入情况i下IO口输入是高电平还是低电平是无法判断的,特别易受扰动改变。故这里通过上拉电阻或者下拉电阻来保证这种情形下是高电平还是低电平。
3.再往左边是肖特基触发器,估计就是施密特触发器(翻译错误?),对于输入电压整形所用,输入电压大于高阈值,输出瞬间高电平,输入小于某个低阈值,输出瞬间低电平。位于高低阈值之间的情形不改变电平情况,可以很大程度上还原各种扰动的模拟电平信号转换为数字信号,减少扰动抖动的影响。此时整形后的波形可以直接写入输入数据寄存器,此时程序读取输入寄存器某一位数据,可以读取电平了。此时上面的模拟输入和复用功能输入。模拟输入是接到stm32的ADC外设的,所以需要模拟量,接在施密特触发器前面。而复用端口输入接到其他需要读取端口的外设上面。

模拟输入时施密特触发器处于关闭,无效,整个GPIO大部分没用,就两个保护二极管,然后直接将信号给ADC外设

考虑输出情况

数字部分可以有输出数据寄存器或者片上外设控制。这两个控制方式通过输出选择器接到了输出控制部分。

写输出数据寄存器每一位就可以操作对应某个IO端口。
这个左边还有一个位设置/清除寄存器,这个可以单独设置输出数据寄存器的某一位,不影响其他位。
当然也可以用与或操作输出数据寄存器,但是效率不高。

输出控制后面接两个MOS管,其实就是两个开关,通过信号控制开关的导通和关闭,开关负责将IO口接到Vdd或者Vss,这里对应三种输出模式,推挽、开漏、关闭。

推挽输出模式,PMOS和NMOS都有效,输出数据寄存器为1时,PMOS导通,NMOS断开,输出直接接到VDD,输出高电平;输出数据寄存器为0时,NMOS导通,PMOS断开,输出直接接到Vss,输出低电平。高低电平都有较强驱动能力。stm32让你输出高就高,低就低,有绝对控制能力。

开漏模式,只有NMOS有效,也就只有低电平有驱动能力,高电平没有驱动能力,此时可以将IO口作为通信协议的驱动方式,如IIC,多机通信时,可以避免各个设备互相干扰。开漏还可以再外接上拉电阻到5v,此时低电平还是低电平vss,高电平由外接电阻直接上拉到5v

关闭模式,此时一般设置为输入模式,端口只能输入不能输出
输出模式下,输入模式也是有效的,可以一边输出,一边读取自己输出的结果。

复用开漏输出,引脚的结果由外设控制,不经过输出数据寄存器

标签:输出,高电平,STM32f103c8t6,低电平,学习,IO,寄存器,输入
From: https://www.cnblogs.com/wzxzibo/p/17150678.html

相关文章

  • SQL学习
    一、函数学习1、ROW_NUMBER()OVER()函数语法格式:row_number()over(partitionby分组列orderby排序列desc)注意;在使用row_number()over()函数时候,over()里头的......
  • Java数组学习
    Java数组学习ArrayDemo1packagecom.yuan.array;publicclassArrayDemo1{//变量的类型变量的名字=变量的值;//数组类型//数组的长度......
  • docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服
    前言大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服......
  • Day01-Markdown学习
    Markdown学习要看具体格式可在安装Typora中在点击“启动源代码模式”标题:一级标题:#+空格+标题,二级标题:##+空格+标题,三级四级标题同理 字体Hello,World!(字体两边......
  • 选择最佳机器学习模型的10步指南
    机器学习可以用来解决广泛的问题。但是有很多多不同的模型可以选择,要知道哪一个适合是一个非常麻烦的事情。本文的总结将帮助你选择最适合需求的机器学习模型。完整文章:......
  • 软件工程|UML学习
    转载自一文掌握14种UML图-腾讯云开发者社区-腾讯云(tencent.com)什么是UML?UML是UnifiedModelLanguage的缩写,中文是统一建模语言,是由一整套图表组成的标准化建模语......
  • uni-app学习笔记之----不同平台,独立设置
    (不断补充中。。。)1、导航栏2、条件编译不同的条件标记,会被编译到不同的平台开头:【#ifdef】或【#ifndef】+平台名称结尾:【#endif】html中: js中: css中:......
  • 吴恩达神经网络与深度学习——深度学习引言
    一、深度学习引言1.应用对于图像应用,我们经常在神经网络上使用卷积(ConvolutionalNeuralNetwork),通常缩写为CNN。对于序列数据,例如音频,语言,英语和汉语字母表或单词,......
  • Linux学习总结
    Linux学习笔记一、基本Liunx命令二、管道符、重定向与环境变量三、Vim编辑器四、Shell命令脚本五、用户身份与文件权限六、存储结构与磁盘划分七、RAID与LVM磁盘阵列技......
  • 高端Java培训课程的学习有什么区别
    Java软件开发想必大家都是了解的,作为互联网炙手可热的行业,这类的相关人才各方面都得到了不少的优待,所以,想要进入这个行业发展的年轻人非常多,相对的大家都更喜欢报名Java培......