GPIO--Part1

GPIO的介绍

GPIO的名词解释

GPIO(general-purpose input/output)
G–>general 通用的
P–>purpose 表示目的用途
I—>input 输入
O–>output 输出

GPIO主要作用

作为单片机与片外外设进行通信交流的唯一通道。

GPIO的引脚命名规则

端口号:用大写字母A-I表示
(每个端口号下最多可以有16个引脚)

那么引脚又是由什么编号表示的呢?

引脚号:用数字0-15来表示
某一端口下的某一引脚的表示方式:P+端口号+引脚号

比如PA1表示在GPIOA中的1号引脚

GPIO的四大功能

1.输入(I/IN)

单片机通过相应的引脚接受外界电平变化从而产生可能的事件。
单片机在此活动中处于被动状态
一般来说输入的模式有4种,上拉输入下拉输入浮空输入模拟输入

2.输出(O/OUT)

单片机通过相应的引脚输出一定的电平变化从而产生可能的事件。
单片机在此活动中处于主动状态
一般来说输出的模式有两大类,推挽输出开漏输出

3.复用(F/AF)

一个引脚上除了可以被当作GPIO使用,还有可能作为其他功能的复用引脚。
部分引脚复用图
比如,图中的PA1还可以当作定时器TIM5的CH2引脚使用
简言之,一个人有多套衣服,什么时候穿哪套由单片机设定

4.模拟(A/AN)

模拟量(Analog Signal): 这是一种连续变化的信号,可以表示为一条连续的曲线,它能够无限接近真实世界的变化。比如声音、光线强度等。

数字量(Digital Signal): 这是一种离散的信号,它由一系列固定数值组成,这些数值通常是二进制形式,即0和1。数字信号易于存储和传输,且抗干扰能力强。
在这种模式下,GPIO引脚可以读取模拟信号,也就是连续变化的电压值,而不是仅仅读取数字信号的0或1。这使得GPIO能够与模拟传感器或执行器等设备进行交互。

位运算

单片机的底层其实就是对不同寄存器进行读写操作,所以理解并且掌握位运算的逻辑就显的额外重要,虽然后面主要还是使用标准库函数作为我们的代码载体,但掌握原理后再使用库函数的时候理解会更精进。

1.& 按位与

全1为1,有0则0

2.| 按位或

有1为1,全0则0

3.~ 按位取反

1与0互换

4.^ 按位异或

相同为0,不同为1

5.<< 左移

x << n (x向左移n)

6.>> 右移

x >> n (x向右移n)

如果我们想使x的第n位为1,则:
x |= (1<<n)
如果我们想使x的第n位为0,则:
x &= ~(1<<n)

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是爬取某音评论区的 Python 代码: ```python import requests import json # 设置请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 模拟登录并获取cookies session = requests.session() login_url = 'https://passport.xiaomi.com/oauth2/login' session.get(login_url, headers=headers) login_api = 'https://account.xiaomi.com/pass/serviceLoginAuth2?_json=true' post_data = { 'sid': 'passport.xiaomi.com', 'callback': 'https://www.xiaomiyoupin.com/callback', 'qs': '%3FredirectUrl%3Dhttps%253A%252F%252Fm.xiaomiyoupin.com%252Fcomment%252Flist%253FgoodsId%253D118280%2526pageIndex%253D1%2526pageSize%253D10', '_sign': 'yR4M%2Fq%2BMFbqzFYjxZyJ3n9yMx7M%3D', 'serviceParam': '{"checkSafePhone":false}', 'service': 'mipay', 'loginTime': '1629805765', 'showExtra': 'true', 'callbackUrl': 'https://www.xiaomiyoupin.com/callback', 'qsStamp': 'eyJpdiI6InRnWU9pV1B0NzJQcHRoV3h1Zll1TlE9PSIsInZhbHVlIjoiWnZPRjN0bGY1QWpCQng5UWtWc1p4Zz09IiwibWFjIjoiYTJhMzg1ZjdhZjIwNmYzYzk0ZGJmMDY1ZjhhODM3YjQ0MjBhNjQ3YzhlZjM2NzczZjhiZmE5OGJjYjczMjBjZSJ9', 'sidTimeout': '1h', '_json': 'true', 'qsToken': 'eyJpdiI6IjJiNTdUZ21haE1aZzZmQ0xlQXh4dEE9PSIsInZhbHVlIjoiYStGXC9WQzBtRmZ1NU1Wb0tqT1ZUZz09IiwibWFjIjoiYzY2NTk0MjRlNDg0ZmY0ODRmNzU1ZGEyNTUzNzAzNzIzOWUyMzgyMjYzYjlkNjQ2ZDQ1MmRjZjNiNTQ2ZjEyZCJ9', 'deviceId': 'c7b4f0e9-b9da-31da-9c77-9b15a6b64a14', 'pwdMethod': 'pwd', 'user': 'your_account', # 替换成你的账号 'hash': 'your_password' # 替换成你的密码 } session.post(login_api, headers=headers, data=post_data) # 获取评论列表 comment_url = 'https://m.xiaomiyoupin.com/comment/list?goodsId=118280&pageIndex=1&pageSize=10' response = session.get(comment_url, headers=headers) if response.status_code == 200: result = json.loads(response.text) comments = result['data']['list'] for comment in comments: print(comment['content']) else: print('获取评论失败') ``` 需要注意的是,这个代码中的 `your_account` 和 `your_password` 需要替换成你自己的某音账号和密码。同时,由于某音评论区需要登录才能访问,所以在代码中我们先模拟登录并获取 cookies,然后再通过 cookies 访问评论列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值