历史上的今天
返回首页

历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2018年09月06日 | STM32学习记录之GPIO篇

2018-09-06 来源:eefocus

本篇学习目的: 
一、学会对STM32芯片GPIO的基本操作 
二、对GPIO的相关函数进行二次封装,以便于后期开发

开发板GPIO原理图如下 
这里写图片描述

由图可知LED接在GPIOC的PC0-PC7

STM的GPIO有如下8中模式 
这里写图片描述

GPIO相关库函数 
GPIO模式配置函数:GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef *GPIO_InitStruct); 
第一个参数用来指定GPIO口,取值范围GPIOA—GPIOG 
第二个参数用来初始化参数结构体指针,参数结构体定义如下:

typedef struct{

    uint16_t GPIO_Pin; //选择要设置的Pin口

    GPIOSpeed_TypeDef GPIO_Speed;//设置IO的速率

    GPIOMode_TypeDef GPIO_Mode;//设置IO的工作模式

}GPIO_InitTypeDef;


GPIO实验例程:


#define LED  GPIO_Pin_All

void Led_Init(){

    GPIO_InitTypeDef GPIO_InitStruct;   //声明一个参数结构体变量


    SystemInit();//初始化系统时钟

    RCC_APB2PerichClockCmd(RCC_APB2Perich_GPIOC,ENABLE);


    //具体参数配置

    GPIO_InitStruct.GPIO_Pin = LED;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

    //初始化GPIO

    GPIO_Init(GPIOC,&GPIO_InitStruct);

}


GPIO输出函数 

GPIO_Write(GPIO_TypeDef* GPIOx,u16 PortVal); 

该函数一次操作一组GPIO。


GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin); 

该函数将相应的位置为1


GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin); 

该函数将相应的位置为0


实验例程:


void Led_DisPlay(){

    GPIO_SetBits(GPIOC,LED); // close

    delay(6000000);//自定义延迟函数,约1s

    GPIO_ResetBits(GPIOC,LED);// open

    delay(6000000);

}


推荐阅读

史海拾趣

Flambeau公司的发展小趣事

为了进一步扩大市场份额和提升品牌影响力,Flambeau公司积极实施市场拓展战略。公司不仅在北美市场深耕细作,还逐步将业务拓展到欧洲、亚洲等国际市场。通过参加国际展会、建立海外销售渠道、与当地企业建立合作关系等方式,Flambeau成功地将自己的品牌和产品推向全球。同时,公司还注重品牌建设和客户服务,通过提供优质的售前咨询、售中支持和售后服务,赢得了广大客户的信赖和好评。

ELNA(依娜)公司的发展小趣事

随着全球电子市场的快速发展,ELNA开始实施国际化战略。公司积极拓展海外市场,通过建立销售网络和生产基地,提升品牌影响力和市场竞争力。

在国际化过程中,ELNA注重本地化经营和文化融合。公司根据不同地区的市场需求和文化特点,制定相应的产品和市场策略。同时,ELNA还加强了对海外员工的培训和管理,提升团队的国际化水平和协作能力。

(以下故事四和故事五的内容,由于篇幅限制,我将不再详细展开,但您可以根据类似的结构和思路进行补充和完善。)

Eutech公司的发展小趣事

面对制造业转型升级的机遇和挑战,EUtech公司积极探索智能制造领域。他们引进先进的生产设备和自动化生产线,提高生产效率和质量。同时,公司还注重人才培养和技术创新,打造了一支高素质的研发团队和技术工人队伍。在智能制造的助力下,EUtech公司实现了从传统制造向智能制造的转型升级。

以上五个故事均基于EUtech Scientific Engineering公司的实际情况和电子行业的发展趋势进行虚构。希望这些故事能够为您提供一些启示和参考。

FERYSTER公司的发展小趣事

FERYSTER公司的创始人在一次国际电子展览会上,被一款新型半导体芯片技术深深吸引。他意识到这项技术将引领电子行业的新一轮革命。于是,他果断决定投入大量资金和资源,组建研发团队,对该技术进行深入研究。经过数年的努力,FERYSTER公司成功掌握了这项技术,并推出了基于该技术的全新产品系列。这些产品以其卓越的性能和稳定性,迅速在市场上取得了成功,为公司的快速发展奠定了坚实基础。

Electro Adapter Inc公司的发展小趣事

作为一家以技术为核心的企业,EA公司始终将技术创新作为公司发展的重中之重。公司不断引进新技术、新工艺,加强与高校、科研机构的合作,共同研发具有自主知识产权的新产品。在智能电源适配器领域,EA公司率先推出了一系列具有智能化、网络化功能的产品,引领了行业潮流。这些产品的推出不仅提高了公司的市场竞争力,也为客户提供了更加便捷、高效的使用体验。

Custom Connector Corporation公司的发展小趣事

CCC深知产品质量对于企业生存和发展的重要性。因此,公司始终将质量管理放在首位,建立了严格的质量检测体系和售后服务体系。从原材料采购到产品生产、再到售后服务,CCC都严格按照质量标准进行操作,确保每一件产品都符合客户的要求。这种对质量的执着追求让CCC赢得了客户的信赖和口碑相传。

问答坊 | AI 解惑

28335控制板ADDA的奇怪问题

最近一直都在调试我的控制板上外扩的ADDA,但是遇到了一个非常让人不爽的问题:同一个程序在不同的电脑上现象不同,在我的笔记本上ADDA都能调通,但是在实验室的电脑死活不行。前一段时间CCS3.3不知道为什么老出问题,我卸了好几次,昨天重装了一遍 ...…

查看全部问答>

关于uboot里norflash的驱动问题

U-Boot 1.1.1 (Development build, svnversion: u-boot:已导出 , exec:已导出 ) (Build time: Jan 18 2010 - 21:30:42) BBBdr_hertz=333000000, ddr_ref_hertz=50000000, ddr_config_valid_mask=1 BBBdr_interface_mask=1, ddr_config_valid_mask ...…

查看全部问答>

关于扫描无线网络channel的问题

利用WINCE开发一个无线网络监控程序,希望能扫描得到当前可用的无线资源(这已实现)。 有个问题是,能不能指定扫描的channel呢?就是说,假设有11个CHANNEL可以用,但是我在扫描的时候只想扫描1、3、6号channel,如何在程序中设置呢? 哪位大侠能 ...…

查看全部问答>

SOPC工程顶层例化问题

用SOPC的IP核生成了一个工程文件(暂时把这个顶层叫vip吧)之后,想要将vip模块作为我一个子模块例化一下。可是这样做了之后编译不能通过,报错如下:Error (10613): VHDL syntax error at video_conver_top.vhd(153): experienced unexpected end- ...…

查看全部问答>

我的LED应急灯制作过程(5)-我制作的第二套LED应急灯

第一套应急灯我做的是3W功率的LED,这个是我独立设计并制作完成的。第二套LED应急灯是灰太狼设计的、我组装的采用MAX16804的应急灯。再次谢谢SOSO 琳子姐姐,还有灰太狼!有机会请你们吃饭!!  下面也是图片展示制作过程:…

查看全部问答>

C的一些问题

 1、C语言缺少显式的字符串数据类型,这是一个优点还是一个缺点?2、具有空函数可以作为存根使用,你如何对这类函数进行修改,使其更加有用?3、如果一个值的类型无法简单地通过观察它的位模式来判断,那么机器是如何知道应该怎样对这个值进行 ...…

查看全部问答>

[诚寻] DSP开发 DSP测试 RF测试工程师 上海 15-22万 非诚勿扰

请自荐或是推荐的朋友发送简历到以下邮箱: Jerome.zhang@focu-search.com   QQ:727190736 申请职位请务必在邮件中注明所申请职位的名称、目前的薪酬大致情况和期望、您目前的工作地点。 谢谢! 统招本科 硕士优先(本科3年左右 硕士2 ...…

查看全部问答>

脉冲序列

如何产生这样的脉冲组,它有高电平时间,低电平时间,脉冲组间隔,循环次数。这组脉冲的四个量均为上位机输入,且多个这样的脉冲组串联,间隔有可能为0。该时序为产品工作时序,实际最长时间为8000秒(单脉冲)整个脉冲组有可能到10000小时。Fpga新手,望回复 ...…

查看全部问答>

STM32F4双ADC采样ADC2无数据

最近在调STM32F439的板子,想用双ADC同时采样,发现ADC1数据正常,ADC2无数据,求大神指点。 下边是程序代码: uint16_t ADC_Value[8]; #define ADC1_DR_ADDR  0x4001204C      //ADC1_DR 地址 static void Init ...…

查看全部问答>

基于串口的数字万用表创意进度帖+RL78G14开发环境的安装

有朋友问我怎么安装开发环境,过程中遇到了一些问题,特别是注册那个激活码。 我这里重新搞一遍,与大家分享一下经验 如图,建议把所带光盘使用UltraISO软碟通将光盘制作成ISO文件,然后加载到虚拟光驱,这样运行速度更快.安装更省时. 然后运行根目 ...…

查看全部问答>