ReRain
认证:普通会员
所在专题目录 查看专题
【蓝桥杯嵌入式】二、STM32之按键+蜂鸣器
【蓝桥杯嵌入式】三、STM32之定时器配置
【蓝桥杯嵌入式】四、关于STM32的定时器配置中时钟分割的问题
【蓝桥杯嵌入式】五、STM32之通用定时器输出PWM波
【蓝桥杯嵌入式】六、关于STM32的定时器配置中时钟分割的问题
【蓝桥杯嵌入式】七、STM32变量定义及位带操作
作者动态 更多
【蓝桥杯单片机】十二、底层练习
2021-04-20 17:46
【蓝桥杯单片机】十一、第十届蓝桥杯省赛失败总结加试题分析
2021-04-11 20:50
【蓝桥杯单片机】十、第九届蓝桥杯国赛之“多功能测量仪表”
2021-04-01 16:36
【蓝桥杯单片机】九、第九届省赛之彩灯控制器
2021-03-30 18:19
【蓝桥杯单片机】八、第八届省赛之电子钟
2021-03-29 18:41

【蓝桥杯嵌入式】七、STM32变量定义及位带操作

导读:开启新的专栏啦~希望大家可以多多支持呀!!!《蓝桥杯嵌入式》专栏文章是博主在自学stm32期间所做的学习笔记,同时为了备战蓝桥杯比赛,博主在学习期间所用的开发板为蓝桥杯嵌入式专用开发板。菜鸟思维,写的可能会有一点繁琐,但是我觉得学习是要一步一步来的,也希望自己可以把每一点都弄懂。希望可以对初学者有些帮助,如有错误,欢迎评论区留言指正哦~

一、stm32变量定义 

不需要自己定义,库函数中有声明 (stm32f10x.h),只需要写一个(stm32f10x.h)的头文件就可以了。 char 通常被定义成 8 位宽; int 通常被定义成 16 位或 32 位宽(或更高),它取决于平台(编译器将在这两者间选择最合适的字宽); short 通常被定义成 16 位宽; long 通常被定义成 32 或 64位宽。

参考链接:

二、stm32位带操作 

可类比51中的位操作:sbit LED = P1^0;,可直接对一组GPIO的某一位进行单独的定义和操作,如:PAout(1) = 1;相当于:GPIO_SetBits(GPIOA, GPIO_Pin_1);要使用位带操作,需要加入以下代码:

//位带操作,实现51类似的GPIO控制功能
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
//IO口操作宏定义
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 
//IO口地址映射
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C 
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C 
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C 
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C 
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C 
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C    
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C    

#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808 
#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08 
#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008 
#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408 
#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808 
#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08 
#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08 
 
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //输入

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //输出 
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //输入

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //输出 
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //输入
/
//Ex_NVIC_Config专用定义
#define GPIO_A 0
#define GPIO_B 1
#define GPIO_C 2
#define GPIO_D 3
#define GPIO_E 4
#define GPIO_F 5
#define GPIO_G 6 

参考链接:关于stm32位带操作问题

希望大家可以多多点赞收藏,也不要忘记点一个大大的关注哦~感谢大家!!

祝您2021大吉大利,升职加薪~~

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 135
收藏 135
关注 302
成为作者 赚取收益
全部留言
0/200
  • dy-SgCRSAWd 2021-04-29 21:24
    佩服楼主
    回复
  • dy-lZg1ikQS 2021-04-29 21:04
    大开眼界,真是好文
    回复
  • dy-6jaMNnKj 2021-04-29 11:05
    什么时候更新
    回复
  • dy-uP6R9bIG 2021-04-28 22:22
    围观学习
    回复
  • dy-faUxdNVf 2021-04-28 22:16
    讲的真好!
    回复
  • dy-ARsdJtu2 2021-04-28 16:42
    精彩,很多东西还没接触到
    回复
  • dy-PfBg9fHc 2021-04-28 15:17
    精彩,很多东西还没接触到
    回复
  • dy-BntE74dS 2021-04-27 11:38
    什么时候更新
    回复
  • dy-AstN3YsZ 2021-04-27 11:25
    不亚于看了一篇高质量论文
    回复
  • dy-kWQSvfcY 2021-04-26 11:28
    讲的真好!
    回复
  • dy-IRhxrrTG 2021-04-26 11:07
    佩服楼主
    回复
  • dy-EWZRbIzj 2021-04-22 11:27
    精彩,很多东西还没接触到
    回复
  • dy-HlVFyepq 2021-04-21 20:52
    感谢分享
    回复
  • dy-fEyVNAbF 2021-04-21 15:45
    感谢博主!
    回复
  • dy-cfgdwamL 2021-04-21 12:59
    佩服楼主
    回复
  • dy-ayNTwT3L 2021-04-21 12:29
    对我很有帮助
    回复
  • dy-LiDZV1Qr 2021-04-20 18:10
    佩服楼主
    回复
  • dy-rfrUF2fp 2021-04-20 17:03
    佩服楼主
    回复
  • dy-bHww98js 2021-04-19 23:03
    精彩,很多东西还没接触到
    回复
  • dy-FPtpScGU 2021-04-19 09:07
    不亚于看了一篇高质量论文
    回复