关闭

STM32的库如何实现对同一组IO口的一部分引脚进行读写

2860人阅读 评论(0) 收藏 举报
分类:
规则: 
一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位的某位为'0',则对应的I/O端口不变。 
二、置GPIOD->BSRR高16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BSRR高16位的某位为'0',则对应的I/O端口不变。 
三、置GPIOD->BRR低16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BRR低16位的某位为'0',则对应的I/O端口不变。
例如: 
1)要设置D0、D5、D10、D11为高,而保持其它I/O口不变,只需一行语句: 
  GPIOD->BSRR = 0x0C21;// 使用规则一
2)要设置D1、D3、D14、D15为低,而保持其它I/O口不变,只需一行语句: 
  GPIOD->BRR = 0xC00A;// 使用规则三
3)要同时设置D0、D5、D10、D11为高,设置D1、D3、D14、D15为低,而保持其它I/O口不变,也只需一行语句: 
  GPIOD->BSRR = 0xC00A0C21;// 使用规则一和规则二 

所以,如果想改变一组引脚的低八位的值,可以这样实现:
#define DATAOUT(data) do{ \
       GPIO_SetBits(GPIOE, data&0x00ff);   \
       GPIO_ResetBits(GPIOE,(~data & 0x00ff));  \
      }while(0) 

也可以直接操作这两个寄存器: 
GPIOD->BSRR = data & 0x00ff; 
GPIOD->BRR = ~data & 0x00ff; 

高八位同理。 
0
0
查看评论

STM32的IO输入与输出

详细研究推挽输出和开漏输出,涵盖各种输入输出
  • qq_37829176
  • qq_37829176
  • 2017-03-09 15:14
  • 634

STM32的库如何实现对同一组IO口的一部分引脚进行读写

规则:  一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位的某位为'0',则对应的I/O端口不变。  二、置GPIOD->BSRR高16位的某位...
  • stephenbruce
  • stephenbruce
  • 2015-09-12 11:31
  • 2089

stm32f103学习笔记(三)按键输入(IO口输入)

学stm32第三天了,才学到按键输入,这进度也是醉了。。。谁叫俺c语言基础不行,还没有学过模数电呢。。 开发板上有4个按键:key0,key1,key2和wk_up,分别接在PE4,PE3,PE2和PA0上: KEY0、 KEY1 和 KEY2 是低电平有效,而 WK_UP 是高电平有效,接下来...
  • mvp_dong
  • mvp_dong
  • 2015-01-21 20:16
  • 6374

判断STM32 GPIO输入口的输入状态(高电平或低电平)

判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例:   ① 判断单个端口是否为高电平: if(GPIOE->IDR& GPIO_IDR_IDR2) { 函数体; } 当PE2端口为高电平时,if条件为真;当PE2口为低电平时,i...
  • dzihui
  • dzihui
  • 2015-06-16 09:44
  • 9668

stm32库函数IO口控制

stm32的IO口比51复杂多,所以使用起来比较困难,首先stm32的IO口可以由软件配置成8种工作模式: 1输入浮空 2输入上拉 3输入下拉 4模拟输入 5开漏输出 6推挽输出 7推挽式复用功能 8开漏式复用功能 每个IO可以自由编程,IO口寄存器必须按32位字被访问。STM32...
  • Q776860641
  • Q776860641
  • 2015-06-05 16:21
  • 4096

STM32的8种IO口的模式

一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。         推挽电路是两个参数相同的三极管或MOSFET,...
  • lq18811566072
  • lq18811566072
  • 2016-06-04 19:26
  • 4728

STM32F407VG IO位操作

/************************************ 标题:操作GPIO的练习 软件平台:MDK-keil uvision v4.23 硬件平台:stm32f4-discovery 主频:168M author:大舟 ...
  • dazhou158
  • dazhou158
  • 2012-09-12 17:14
  • 1806

STM32怎么读取输出口电平

其实你自己在库函数源文件也能找到,以PC13为例: 要是你设置为输入: GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13);//读取输入口PC13值 要是你设置为输出: GPIO_ReadOutputDataBit (GPIOC,GPIO_Pin_13); //读取输入...
  • dddxxxx
  • dddxxxx
  • 2017-08-18 17:53
  • 704

stm32普通IO口捕获PWM的高电平

思路:普通IO口配置上升沿下降沿触发中断,然后配置一个定时器(周期大于等于PWM周期),在IO口中断中读取定时器计数。 定时器不需要配置中断 void TIM3_Configuration(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStruc...
  • mjlsuccess
  • mjlsuccess
  • 2016-12-10 19:55
  • 1342

STM32中GPIO的8种工作模式!

1、GPIO_Mode_AIN                 模拟输入 2、GPIO_Mode_IN_FLOATING 浮空输入 3、G...
  • kevinhg
  • kevinhg
  • 2013-12-22 22:54
  • 56509
    个人资料
    • 访问:28716次
    • 积分:425
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条