搜索

[MM32软件] MM32F0010 GPIO直观简单设置

[复制链接]
105|1
 楼主 | 2021-2-15 20:20 | 显示全部楼层 |阅读模式
本帖最后由 lxz600408 于 2021-2-15 20:47 编辑

由应用手册,分柝该芯片配置寄存器。实际仅是7种配置。我是如下定义:
#define GPIO_IN_AIN        0x00UL //模拟输入模式
#define GPIO_IN_FLOATING   0x04UL//浮空输入模式
#define GPIO_IN_UpDown     0x08UL //上拉/下拉输入模式 PxODR=1 上拉  PxODR=0 下拉
#define GPIO_OUT_PP        0x01UL//通用推挽输出模式
#define GPIO_OUT_OD        0x05UL//通用开漏输出模式                          
#define GPIO_AF_PP         0x09UL//复用推挽输出模式
#define GPIO_AF_OD         0x0DUL//复用开漏输出模式
#define CNF_MODE_MASK      0x0FUL
//脚定义
#define CNF_MODE_Pin0       0                                    
#define CNF_MODE_Pin1       4                                   
#define CNF_MODE_Pin2       8                                    
#define CNF_MODE_Pin3       12                                    
#define CNF_MODE_Pin4       16                                    
#define CNF_MODE_Pin5       20                                   
#define CNF_MODE_Pin6       24                                    
#define CNF_MODE_Pin7       28                                    
#define CNF_MODE_Pin8       0                                      
#define CNF_MODE_Pin9       4                                    
#define CNF_MODE_Pin10      8                                 
#define CNF_MODE_Pin11      12                                    
#define CNF_MODE_Pin12      16                                    
#define CNF_MODE_Pin13      20                                    
#define CNF_MODE_Pin14      24                                      
#define CNF_MODE_Pin15      28  

本人实际应用全部脚位配置就如下:
GPIOA->CRL = 0; //GPIOA->CRL复位值: 0x4444 4444浮空输入模式
  GPIOA->CRL |= ((GPIO_AF_PP << CNF_MODE_Pin7)|(GPIO_OUT_PP << CNF_MODE_Pin6)|
                 (GPIO_OUT_PP << CNF_MODE_Pin5)|(GPIO_OUT_PP << CNF_MODE_Pin4)|
                   (GPIO_IN_UpDown << CNF_MODE_Pin3)|(GPIO_IN_AIN << CNF_MODE_Pin2)|
                     (GPIO_OUT_PP << CNF_MODE_Pin1)|(GPIO_AF_PP << CNF_MODE_Pin0));
GPIOA->CRH =0X04400000;////复位值: 0x4444 4444 不改变PA13/PA14
  GPIOA->CRH |= ((GPIO_IN_AIN << CNF_MODE_Pin15)|(GPIO_AF_PP << CNF_MODE_Pin12)|
                 (GPIO_OUT_PP << CNF_MODE_Pin11)|(GPIO_OUT_PP << CNF_MODE_Pin10)|
                   (GPIO_AF_PP << CNF_MODE_Pin9)|(GPIO_AF_PP << CNF_MODE_Pin8));

GPIOB->CRL &= ~((CNF_MODE_MASK << CNF_MODE_Pin1)|(CNF_MODE_MASK << CNF_MODE_Pin0));
  GPIOB->CRL |= ((GPIO_OUT_PP << CNF_MODE_Pin1)|(GPIO_OUT_PP << CNF_MODE_Pin0));





使用特权

评论回复
| 2021-2-19 11:24 | 显示全部楼层
这样看,很直观的了。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表