1.22学习心得

STM32按键扫描与C语言知识点总结
本文介绍了STM32中按键扫描函数的编写,利用GPIO输入库函数及static关键字实现防抖动处理。讲解了C语言的位操作、宏定义、条件编译、类型别名以及static的作用。此外,还概述了STM32的时钟系统,包括5个时钟源和系统时钟的选择。最后,作者表达了对时钟配置复杂性的困惑。

按键扫描函数的编写:采用GPIO输入库函数:

                uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

 关于static的使用:具有记忆功能,存储上一次函数执行的返回值,只执行一次。用来写按键扫描函数,可以记忆键值。

两种模式的按键扫描,

u8 KEY_Scan(u8 mode)

    {

     static u8 key_up=1;这个语句只执行一次。。

     if(mode==1) key_up=1;//支持连续按

      ifkey_up &&  KEY按下)

      {

        delay_ms(10);//延时,防抖

        key_up=0;//标记这次key已经按下

        if(KEY确实按下)

          {

           return KEY_VALUE;

          }

        }else if(KEY没有按下)  key_up=1;

       return 没有按下

    }

通过独立写跑马灯与按键扫描函数,调用库函数写程序的基本步骤如下:

1.使能按键对应IO口时钟

2.初始化GPIO

3.调用的部分的初始化程序(头文件中)

4.主函数

C语言复习

1.位操作:6种位操作(&,|,^(异或),~(取反),<<(左移),>>(右移))

2.define宏定义关键词

3.ifdef条件编译

4.extern变量申明

C语言中extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。这里面要注意,对于extern申明变量可以多次,但定义只有一次。

5. typedef类型别名,定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。在结构体申明的时候可以定义变量,也可以申明之后定义,方法是:

6.Struct 结构体名字   结构体变量列表 ;同一个类型可以用数组,不同类型可以用结构体组织。 结构体可扩展性强。

7.C语言关键字 :static

Static申明的局部变量,存储在静态存储区。

它在函数调用结束之后,不会被释放。它的值会一直保留下来。

所以可以说static申明的局部变量,具有记忆功能

时钟系统和时钟初始化

1. STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。

    ①、HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。(我们采用的是8M)
③、LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC
⑤、PLL为锁相环倍频输出。STM32F4有两个PLL:

PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。

第一个输出PLLP用于生成高速的系统时钟(最高168MHz)

第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。

专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。

2. 系统时钟SYSCLK可来源于三个时钟源:
        ①、HSI振荡器时钟

        ②、HSE振荡器时钟

        ③、PLL时钟3.STM32F4时钟信号输出MCO1(PA8)和MCO2(PC9)。

MCO1:用户可以配置预分频器(1~5)向MCO1引脚PA8输出4个不同的时钟源:

 HIS,LSE,HSE,PLL

MCO2:用户可以配置预分频器(1~5)向MCO2引脚PC9输出4个不同的时钟源:

HSE,PLL,SYSCLK,PLLI2S

 MCO最大输出时钟不超过100MHz

任何一个外设在使用之前,必须首先使能其相应的时钟。

看不懂时钟!

麻痹,太难了

肿么办呀。。。。。都不懂

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值