关于stm32的IO口的封装

前言:STM32的PA,PB各有16脚,用不上那么多,该怎样处理呢?

注:unchar 是 unsigned char

关于输出同时操作8位

 1 //***************************************************************/
 2 #define part_a_o PBout(0)//                                     */
 3 #define part_b_o PBout(1)//                                     */
 4 #define part_c_o PBout(2)//                                     */
 5 #define part_d_o PBout(3)//           Data Out                  */
 6 #define part_e_o PBout(4)//                                     */
 7 #define part_f_o PBout(5)//                                     */
 8 #define part_g_o PBout(6)//                                     */
 9 #define part_h_o PBout(7)//                                     */
10 //***************************************************************/
11
12 void GPIO_WriteData(unchar data)
13 {
14     part_h_o=((data&0x80)>>7);
15     part_g_o=((data&0x40)>>6);
16     part_f_o=((data&0x20)>>5);
17     part_e_o=((data&0x10)>>4);
18     part_d_o=((data&0x08)>>3);
19     part_c_o=((data&0x04)>>2);
20     part_b_o=((data&0x02)>>1);
21     part_a_o=((data&0x01));
22 }

关于输入同时操作8位

 1 //***************************************************************/
 2 #define part_a_i PBin(0)//                                      */
 3 #define part_b_i PBin(1)//                                      */
 4 #define part_c_i PBin(2)//                                      */
 5 #define part_d_i PBin(3)//         Data In                      */
 6 #define part_e_i PBin(4)//                                      */
 7 #define part_f_i PBin(5)//                                      */
 8 #define part_g_i PBin(6)//                                      */
 9 #define part_h_i PBin(7)//                                      */
10 //***************************************************************/
11
12 unchar GPIO_RedData(void)
13 {
14     unchar data=0x00;
15     data=0x80&(data+0x7f+part_a_i);
16     data=0xc0&(data+0x3f+part_b_i);
17     data=0xe0&(data+0x1f+part_c_i);
18     data=0xf0&(data+0x0f+part_d_i);
19     data=0xf8&(data+0x07+part_e_i);
20     data=0xfc&(data+0x03+part_f_i);
21     data=0xfe&(data+0x01+part_g_i);
22     data=0xff&(data+0x00+part_h_i);
23     return data;
24 }

原文地址:https://www.cnblogs.com/wangyishan/p/8764026.html

时间: 2024-12-09 14:15:43

关于stm32的IO口的封装的相关文章

STM32的IO口

STM32 的 IO 口 可以由软件配置成如下 8 种模式: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽输出 7.推挽式复用功能 8.开漏复用功能 每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问.STM32 的很多 IO 口都是 5V 兼容的,这些 IO 口在与 5V 电平的外设连接的时候很有优势,具体哪些 IO 口是 5V 兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level 标 FT 的就是 5V 电平兼容的). S

STM32的IO口的8种配置

STM32的IO口的8种配置 1 STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1 I/O口的输出模式下,有3种输出速度可选(2MHz.10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信

STM32中IO口的8中工作模式

该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也

stm32 普通IO口模拟串口通信

普通IO口模拟串口通信 串口通信协议 串口传输 默认 波特率9600 1起始位 1停止位 其他0 数据位是8位(注意图上的给错了). 传输时,从起始位开始,从一个数据的低位(LSB)开始发送,如图从左向右的顺序,对电平拉高或拉低,最后停止位时拉高. 波特率大小,改变延时时间即可.例如9600 波特率    根据公式 : 1/9600=0.000104s(大致) 也就是说每发送1bit延时104us (下面我用9600波特率来说,代码用的是19200) 串口发送       将电平拉低 延时104

关于STM32的IO口速率问题

输入模式可以不用配置速度,但是输出模式必须确定最大输出频率.当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz.10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的.高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能.注意:GPIO的引脚速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与你的程序有关.

STM32的IO口配置

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR). GPIO端口的每个位可以由软件分别配置成多种模式. 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽式输出 7.推挽式复用功能 8.开漏复用功能 每个I/O端口位可以自由编程,然

STM32系列单片机IO口模式设置

STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和输出寄存器GPIOx_IDR和GPIOx_ODR,1个32位置位复位寄存器GPIOx_BSRR,1个32位锁定寄存器GPIOx_LCKR和2个32位复用功能选择寄存器GPIOx_AFRH和GPIOx_AFRL. GPIO的输出状态可以配置为推挽或开漏加上上拉或下拉.输出数据既可以来自输出数据寄存器,

单片机小白学步系列(二十二) IO口:蜂鸣器的使用/三极管的工作原理

2014-11-22更新:感谢Ireland同学的提醒,修改了PNP型三极管驱动电路,蜂鸣器从三极管的发射极改到了集电极,这样效果会更好,电路也更合理.同时增加了备注4. ====================================== 这一篇继续上一篇的内容,我们来做实验四:按键控制有源蜂鸣器,按下按键蜂鸣器响,释放按键不响. 蜂鸣器 实验四之前简单介绍下蜂鸣器.蜂鸣器有两种,无源蜂鸣器和有源蜂鸣器,一般用于发出报警的声音.声音是由震动产生的,大家都见过喇叭,喇叭里面有磁铁和线圈.

STM32单片机GPIO口配置问题

在学习STM32F单片机时,我们常常困惑什么时候才能叫入门,采用什么样的教材入门,或者采用什么的编程软件.在学习类的教材中,以神州,原点教材布局很多,但是相信很多人看到这类教材也是一头雾水,需要你花费巨大的精力从寄存器的最底层去学习和了解,学习时间还是相对漫长.在采用的编程软件中,KEIL和IAR各有优势吧,在这里我选用的是KEIL. 在开始学习编程时,我采用的是库函数开发指南.在安装完成KEIL软件和添加项目工程时,就开始学习库函数编程. 在编写一个GPIO口控制时,首先我们要知道我们要实现的