历史上的今天
返回首页

历史上的今天

今天是:2025年03月28日(星期五)

正在发生

2019年03月28日 | STM32的按键部分

2019-03-28 来源:eefocus

什么是上拉电阻?按键的上拉电阻为什么是10k欧姆?


答:上拉电阻就是将一个不确定的信号,通过一个电阻和电源VCC相连,固定在高电平。


作用:


1)增加输出引脚的驱动能力(其实就是增加当前导线的电流);


2)防止引脚悬空,否则会产生积累电荷(静电),影响电路稳定性;


3)特别是按键的时候,引脚电平不定的时候,给它一个确定的电平。


至于为什么是10k?因为电阻越小,功耗越大,电阻越大,芯片引脚识别不了,10k的话是大多数智能设备芯片所能识别到的,这是个折中的方案。


二、库函数


st公司为了编程方便,为coder们,封装了一套库函数,并给出了官方模板。自行百度,网上有很多这种资源,stm32f4xx_dsp_stdperiph_lib_um.chm


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //第0根引脚 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //设置输入模式[重点修改] 

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //设置IO的速度为100MHz 

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不需要上拉电阻


GPIO_Init(GPIOF, &GPIO_InitStructure);


使用按键控制灯的亮与灭!例如按键0按下,LED0亮,松开则灭。其他按键如此类推

int main(void) 

/* 使能GPIOA GPIOF端口工作,让GPIOA GPIOF设备时钟使能(上电) */ 

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOF, ENABLE);


/* 让PF9引脚设置为输出模式 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;           //GPIO哪一根引脚,当前是使用第9号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;       //设置PF9引脚为输出模式,具有输出高电平或低电平的功能

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出,让PF9引脚输出的电流更大[可选]

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //PF9引脚工作的速度为100MHz,当前的频率可以是2MHz/25MHz/50MHz/100MHz,频率越高,对应的功耗就越高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    //不需要上下拉电阻,如果发现PF9引脚需要更大的输出电流,可以使用上拉电阻,设置为GPIO_PuPd_UP,对应的功耗就越高

GPIO_Init(GPIOF, &GPIO_InitStructure);


//熄灭PF9引脚连接的LED灯

GPIO_SetBits(GPIOF,GPIO_Pin_9);


/* 让PA0引脚设置为输入模式 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;           //GPIO哪一根引脚,当前是使用第0号引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;        //设置PA0引脚为输入模式,具有检测引脚高电平或低电平的功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //PA0引脚工作的速度为100MHz,当前的频率可以是2MHz/25MHz/50MHz/100MHz,频率越高,对应的功耗就越高

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    //不需要上下拉电阻,如果发现PF9引脚需要更大的输出电流,可以使用上拉电阻,设置为GPIO_PuPd_UP,对应的功耗就越高

GPIO_Init(GPIOA, &GPIO_InitStructure);


while(1)

{

        //检测KEY0是否有按下,若有按下,则检测到低电平;若没有按下,则检测到高电平

        if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)

        {

            //点灯,PF9引脚为低电平

            GPIO_ResetBits(GPIOF,GPIO_Pin_9);


            //延时,灯亮一会儿

            delay();    


            //灭灯,PF9引脚为高电平

            GPIO_SetBits(GPIOF,GPIO_Pin_9);


            //延时,灯灭一会儿

            delay();                    

        }

}

return 0;


输入模式可以不用配置速度,但是输出模式必须确定最大输出频率。 

当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz、10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。 

高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。 

注意:GPIO的引脚速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与你的程序有关。 

三、时钟体系


1、参考手册 STM32F4xx中文参考手册.pdf 第106页


2、时钟源 

a.可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK),CPU运行的额定频率为168MHz: 

● HSI 振荡器时钟,也就是高速内部时钟,一般来说很少用,因为精度没有外部高速时钟那么高。 

● HSE 振荡器时钟,也就是高速外部时钟,我用的M4开发板为8MHz。 

● 主 PLL (PLL) 时钟


b.器件具有以下两个次级时钟源: 

● 32 kHz 低速内部 RC (LSI RC震荡电路),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。 

● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗。


推荐阅读

史海拾趣

H&D Wireless公司的发展小趣事

高创始终坚持研发为核心的发展路线,不断加大对新技术、新产品的投入。近年来,其研发投入占营收比例持续保持在较高水平,有时甚至超过15%。这种高强度的研发投入使得高创能够不断推出具有市场竞争力的新产品,如高性能多轴运动控制器、伺服系统等,满足了市场对于高精度、高速度、高性能运动控制解决方案的需求。

EUPEC [eupec GmbH]公司的发展小趣事

EUPEC,全称欧洲电力半导体与电子公司(European Semiconductors and Electronics Company),成立于1990年。它是由西门子和德国另一家大型电器公司AEG生产电力半导体器件的两个部门合并而成。这次合并标志着EUPEC正式进入电力半导体领域,凭借其强大的技术背景和丰富的行业经验,EUPEC迅速在市场中占据了一席之地。

BESTECH公司的发展小趣事

面对未来市场的机遇和挑战,EUPEC制定了明确的发展战略。公司将继续加大技术创新和研发投入力度,推动电力半导体技术的进步和应用拓展。同时,EUPEC还将加强与国际知名企业的合作与交流,不断提升自身的竞争力和影响力。在应对市场变化和挑战的过程中,EUPEC将始终坚持以客户为中心的理念,为客户提供更优质的产品和服务。

请注意,以上故事是基于EUPEC公司的发展历程和相关信息进行概括和编写的,并非完全基于事实的直接叙述。如需更详细和准确的信息,请参考相关官方资料或新闻报道。

Continental公司的发展小趣事

随着技术的不断进步和市场的不断变化,大陆集团也在不断调整其业务架构。在新的架构中,大陆集团将业务领域划分为三个部分:自主驾驶和安全、车联网和信息、以及橡胶技术(包括轮胎业务和康迪泰克)。这一调整使得大陆集团能够更好地应对市场变化和技术挑战。同时,大陆集团还通过收购和兼并等方式不断扩大其业务范围和技术实力。

Coleman Cable Inc公司的发展小趣事

面对全球市场的不断变化和竞争态势的加剧,Coleman Cable制定了全球化的发展战略。公司加强了对国际市场的调研和分析,根据不同地区的市场需求和特点,制定针对性的市场策略和产品方案。同时,公司还积极拓展国际销售渠道,加强与国际客户的沟通和合作,为公司的长远发展奠定了坚实的基础。

以上五个故事仅代表可能的发展情况,并不代表Coleman Cable Inc公司真实的历史。如果需要更具体和准确的信息,建议直接查阅该公司的官方网站、年报或相关新闻报道。

AMERICASEMI [America Semiconductor, LLC]公司的发展小趣事

AMERICASEMI公司成立于XXXX年,起初是一家专注于半导体技术研发的小型创业公司。在创立初期,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,凭借创始团队对半导体技术的深刻理解和市场需求的敏锐洞察,AMERICASEMI成功开发出一系列具有竞争力的半导体产品,并逐渐在市场中占据了一席之地。

问答坊 | AI 解惑

机电领域中伺服电机的选择原则

提出的选择原则是将电机特性与负载特性分离开 ,并用图解的形式表示 ,这种表示方法使得驱动 装置的可行性检查和不同系统间的比较更方便 ,另外 ,还提供了传动比的一个可能范围.…

查看全部问答>

一本dsp2812的好书

最近刚刚从图书馆借到一本新书《dsp控制技术实践》。中国电力出版社出版,2009.5出版的。专门讨论dsp2812的片子的使用,比ti的中文手册薄多了,看起来挺舒服的。推荐给大家。…

查看全部问答>

最近在学Ardence RTX实时系统软件,有很多不懂的地方,下面是一个定时器程序,不太明白?

  最近在学Ardence RTX实时系统软件,有很多不懂的地方,下面是一个定时器程序,不太明白?请路过大虾们帮忙看看。 下面是源代码,包括两个文件,一个头文件,一个源文件。如下所示: /////////////////////////////////////////////////////// ...…

查看全部问答>

重开一贴...eVC 测试代码

各位大哥大姐好,工作就是问题叠问题,小弟我又来了... 开发板上有几个跳线,我写了一个测试的程序,却出问题了,大家帮忙看看... 跳线驱动部分内容: BOOL Addr_Init() { //地址映射 } BOOL WINAPI  DllEntry(HANDLE hI ...…

查看全部问答>

linux移植问题(ARM,2410)

我用make zImage编译好2.6.13的内核文件后,把/arch/arm/boot/zImage 文件烧进板子后,linux解压出错.错误信息如下: VIVI   version   0.1.4   (root@localhost.localdomain)   (gcc   version ...…

查看全部问答>

板子上把芯片尺寸画大了怎么办?

请问,板子上把芯片尺寸画大了怎么办? 我不小心把板子上面芯片的尺寸单位看错了,板子做出来芯片尺寸大了N多... 请问怎么解决? 有没有转接器之类的?可以把LQFP 48封装的线引出来啊??…

查看全部问答>

关于QEI的问题

最近正在学习luminary,用的是周立功的easyArm8962的板子,在qei的实验例程中有这么两句话:SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI);GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_6,   GPIO_DIR_MODE_HW);GPIODirModeSet( ...…

查看全部问答>

Smart Debug网络与串口调试工具(原创)

最新版本号: 1.0.1.111031        更新日期: 2011.10.26 下载地址1 http://stu.cidp.edu.cn/SmartDebug.rar 下载地址1 下载地址2 http://www.vdisk.cn/down/index/8990713A3710 下 ...…

查看全部问答>

关于热电偶的信号调理电路的问题

我要做多路的温度采集,用的是K型热电偶,电源用电荷泵转换模块,信号调理部分想用AD620和OP07做二级放大,现在有几个地方不太有把握,请做过的帮忙! 一是电源,我现在用12v电瓶供电,用电荷泵转换成+/-12v,这样的电压有一定的纹波,对信号的采 ...…

查看全部问答>