首先我们先看GPIO的寄存器有哪些
1. 端口低配置寄存器 复位值:0x4444 4444
2.端口高配置寄存器 复位值:0x4444 4444
3.端口输入数据寄存器 复位值:0x0000 XXXX
4.端口输出数据寄存器 复位值: 0x0000 0000
5.端口位设置/清除寄存器 复位值: 0x0000 0000
6:端口位清除寄存器 复位值:0x0000 0000
7:端口配置锁定寄存器 复位值: 0x0000 0000
偏移地址从0x00一次加四到0x18
因为是32位寄存器,四个字节,
共七个寄存器
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define PERIPH_BASE ((uint32_t)0x40000000)
通过这样的一段代码就可以将结构体中的七个变量分别指向GPIOC对应的7个寄存器的地址
把GPIOC中的C改为ABCDEFG,就是对应GPIO的端口
再看看GPIO的初始化的代码
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO初始化函数原型是
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
GPIOx用GPIOA,B,C等替代
主要的是GPIO_InitTypeDef这个结构体
typedef struct
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
#define GPIO_Pin_0 ((uint16_t)0x0001)
#define GPIO_Pin_1 ((uint16_t)0x0002)
#define GPIO_Pin_2 ((uint16_t)0x0004)
#define GPIO_Pin_3 ((uint16_t)0x0008)
#define GPIO_Pin_4 ((uint16_t)0x0010)
#define GPIO_Pin_5 ((uint16_t)0x0020)
#define GPIO_Pin_6 ((uint16_t)0x0040)
#define GPIO_Pin_7 ((uint16_t)0x0080)
#define GPIO_Pin_8 ((uint16_t)0x0100)
#define GPIO_Pin_9 ((uint16_t)0x0200)
#define GPIO_Pin_10 ((uint16_t)0x0400)
#define GPIO_Pin_11 ((uint16_t)0x0800)
#define GPIO_Pin_12 ((uint16_t)0x1000)
#define GPIO_Pin_13 ((uint16_t)0x2000)
#define GPIO_Pin_14 ((uint16_t)0x4000)
#define GPIO_Pin_15 ((uint16_t)0x8000)
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
这里说明一下枚举当第一个参数设置后,后面的参数的值会依次递增
typedef enum
{ GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
不难看出,这些程序最终的目标是给参数一个数值,而参数需要得到这个数值后,通过判断这个参数,把这个数值写到对应的寄存器中,这也就是
GPIO_Init(GPIOC,&GPIO_InitStructure);所做的工作,当然这些数值需要进行一些判断,转化的过程,这个具体的过程在
GPIO初始化函数中具体实现。
总结一下初始代码的实现需要的参数是端口,速率,模式;
端口 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)中的GPIO_TypeDef * GPIOX以及结构体
GPIO_InitStruct中的GPIO_Pin_x,x,0,1,2...
速率 结构体GPIO_InitStructure中的 GPIO_Speed_10MHz GPIO_Speed_2MHz GPIO_Speed_50MHz;
模式 结构体GPIO_InitStructure中的 模拟输入模式 浮空输入模式 上拉/下拉输入模式
通用推挽输出模式 通用开漏输出模式 复用功能推挽输出模式 复用功能开漏输出模式 即
GPIO_Mode_AIN = 0x0, 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, 浮空输入
GPIO_Mode_IPD = 0x28,下拉
GPIO_Mode_IPU = 0x48,上拉
GPIO_Mode_Out_OD = 0x14, 推挽输出
GPIO_Mode_Out_PP = 0x10, 开漏输出
GPIO_Mode_AF_OD = 0x1C, 复用推挽
GPIO_Mode_AF_PP = 0x18 复用开漏
上一篇:STM32快速初始化引脚 一行代码完成引脚初始化
下一篇:STM32中的GPIO结构
推荐阅读
史海拾趣
机顶盒,全称为数字视频变换盒(Set Top Box,简称STB),是现代家庭娱乐中不可或缺的重要设备。它作为连接电视机与外部信号源的桥梁,主要功能在于接收数字电视信号,并将其转换成适合在电视机上播放的格式。机顶盒不仅能接收来自有线电缆、卫星天线、宽带网络及地面广播的信号,还具备强大的媒体处理能力和交互功能,极大地丰富了用户的观看体验。
从技术层面看,机顶盒经历了从模拟到数字的飞跃式发展。早期的机顶盒主要用于有线电视网络的信号解扰,而现代机顶盒则支持高清、甚至4K超高清视频内容的播放,为用户带来更为细腻的画面和震撼的音效。此外,机顶盒还集成了网络交互功能,用户可以通过机顶盒连接到互联网,享受在线购物、观看网络视频、玩游戏等多元化服务,使电视机从单向接收信息的设备转变为智能互动终端。
随着科技的进步,机顶盒的功能和应用场景也在不断扩展。例如,一些先进的机顶盒支持智能语音控制,用户可以通过语音指令搜索节目、调整设置,极大地提升了使用的便捷性。同时,机顶盒还具备存储功能,用户可以将喜欢的媒体文件存储在机顶盒中,随时通过电视屏幕进行观看,享受个性化的娱乐体验。
综上所述,机顶盒作为家庭娱乐的重要组成部分,不仅承载着传输和显示数字视频信号的基本功能,还通过不断的技术创新和应用拓展,为用户提供了更加丰富、便捷、智能的观影体验。随着技术的不断进步和市场的不断扩大,机顶盒将继续在家庭娱乐领域发挥重要作用。
面对日益严峻的环境问题,Computer Conversions Corp积极响应环保号召,开始研发更加环保的计算机转换技术。公司不仅优化了生产工艺,减少了生产过程中的能源消耗和废弃物排放,还推出了一系列节能型转换设备,帮助客户在提升计算效率的同时,也降低了能源消耗。这一举措不仅赢得了客户的赞赏,也提升了公司的社会形象。
面对日益激烈的市场竞争,Antiference公司深知单打独斗难以取得长久发展。因此,公司积极寻求与其他企业和研究机构的合作,共同推动电磁干扰抑制技术的创新与发展。通过合作创新,Antiference不仅提升了自身的技术实力和市场竞争力,还推动了整个行业的进步和发展。
这些故事基于电子行业的一般情况和趋势构建,旨在展示一个虚构的公司在发展过程中可能遇到的挑战和机遇。每个故事都围绕Antiference公司的不同发展阶段和关键事件展开,旨在呈现一个全面而真实的发展画卷。
为了进一步拓展业务范围,CSR plc在2010年8月收购了专业音频压缩技术供应商APT。这次收购让CSR plc得以将APT-X的低延迟音频压缩编解码器与公司的下一代音频产品实现更紧密的集成,从而支持公司向前景更广阔的音频市场进军。这一举措不仅让CSR plc在音频领域取得了更大的市场份额,也为其未来的发展开辟了新的道路。
一个优秀的企业不仅要有优质的产品和服务,还要有独特的企业文化。BusBoard公司注重企业文化的建设和传承,通过举办各种活动、培训等方式,让员工更好地了解公司的价值观和发展理念。同时,公司还鼓励员工积极参与公司事务、提出建设性意见,让员工成为公司发展的重要力量。这种以人为本的企业文化使得BusBoard公司的员工队伍更加团结、稳定和有活力。
以上五个故事从不同角度展示了BusBoard公司发展起来的相关情况。这些故事不仅反映了公司的成长历程和发展成果,也体现了公司在电子行业中的地位和影响力。随着科技的不断进步和市场需求的不断变化,BusBoard公司将继续保持创新、拓展市场、提升品质、建设文化,为电子行业的发展贡献更多的力量。
来源:ouravr qilin3 花了80块左右,从一个产品中抄出来的电路。效果很好。贴上来大家一起讨论下原理。 这个电路正常使用完全没问题,随着温度的升高,风扇转速越快,加在风扇上的电压越大,风扇满速时压降只有0.1-0.2V左右。 难以置信的小。 ...… 查看全部问答∨ |
诸如dm9000网卡芯片,怎么设置寄存器可以收到自己发送的数据包? 曾今也看过网络编程,发现只要往127.0.0.1发送,就能够本机收到,或者直接发数据包给自己的IP地址,也是能够接收。我自己做了一块网卡,然后自己也开发了简单的TCP/IP协议栈,数据包的收发已经做完了,两台网络上的机器对法都能收到。二现在我想给 ...… 查看全部问答∨ |
最近上luminary的官方网站才发现更新了最新的驱动库!驱动库里面的资源相当之丰富!但是还是有一些东西不知道是做什么用的!感慨TI的技术支持太强大了!我觉得驱动库里面的例程都是非常有价值的例程值得好好去研究! 除此之外,驱动库 ...… 查看全部问答∨ |
|
全国大学生电子竞赛 NEC单片机UPD78F1166 用户指南 本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 很多人说找不到瑞萨(原NEC)的用户指南,共966页,5.40MB 包含以下单片机78K0R/KG316-bit Single-Chip MicrocontrollersμPD78F1162, 78F1162A, 78F1162A(A)μPD78F1163, 78F1163A, 78F1163A(A)μP ...… 查看全部问答∨ |