为什么要学STM32单片机?答案就在这里

发布时间:2024-09-02  

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。


更重要的是它作为ARM入门级的芯片比较容易掌握,网上资料也很多,很多人都在用。

STM32的IO端口有7个寄存器来控制,但是我们常用的就4个CRL CRH IDR ODR 。

端口配置低寄存器(GPIOx_CRL)

端口配置高寄存器(GPIOx_CRH)

端口输入数据寄存器(GPIOx_IDR)

端口输出数据寄存器(GPIOx_ODR)

其中CRL 控制高8位的 IO CRH 低8这两个实质是一样的。

对照我们AVR来看GPIOx_CRL就相当于DDRx ,GPIOx_ODR就相当于PORTx,GPIOx_ODR就相当于PINxSTM32的 IO 口可以由 口可以由 软件配置成 软件配置成 软件配置成 8种模式: 种模式:


为什么要学STM32?答案就在这里


1、输入浮空

2、输入上拉

3、输入下拉

4、模拟输入

5、开漏输出

6、推挽输出

7、推挽式复用功能

8、开漏复用功能

简单的来说STM32的CRL寄存器可以设置输入、输出模式,还可以设置输出的最大速率。

输入浮空 :既不是上拉也不是下拉输入。

开漏模式和推挽模式:弱上拉和下拉电阻被禁止,开漏模式时,读输入数据寄存器时可得到I/O口状态,推挽模式时,读输出数据寄存器时可得到最后一次写的值,模拟输入配置。弱上拉和下拉电阻被禁止读取输入数据寄存器时数值为’0’。

好接下来要说下一个常常听到的控制方法了,直接操作寄存器和库函数方法直接操作寄存器就是直接对CRL等寄存器写值。库函数是ST官方吧所有的控制都写好了,我们只需要调用。直接操作寄存器

GPIOA-CRH=0XFFFFFFF0;

GPIOA-CRH|=0X00000003;/PA8 推挽输出

GPIOA-ODR|=18; /PA8 输出高

库函数

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12 ;

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;

GPIO_InitStruct.GPIO_Speed =GPIO_Speed_Level_3;

GPIO_Init(GPIOA, GPIO_InitStruct);

GPIO_SetBits(GPIOA, GPIO_Pin_11 | GPIO_Pin_12 );

现在写一个LED的初始化

直接操作寄存器

/LED IO初始化

void LED_Init(void)

{

RCC-APB2ENR|=12; /使能PORTA时钟

GPIOA-CRH=0XFFFFFFF0; /PA8 推挽输出

GPIOA-CRH|=0X00000003;/速率

GPIOA-ODR|=18; /PA8 输出高 一开始高灭灯

}

注:先要使能PORTA时钟

库函数

void LED_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure; /声明结构体ST库

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/使能PA端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;/LED0--PA.8 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /速率

GPIO_Init(GPIOA, GPIO_InitStructure); /结构体初始化

GPIO_SetBits(GPIOA,GPIO_Pin_8);/PA.8 输出高

}

OK到这两种方法的初始化都OK了

main 函数

int main(void)

{

SystemInit(); /系统时钟初始化为72M SYSCLK_FREQ_72MHz

delay_init(72); /延时函数初始化

NVIC_Configuration(); /设置NVIC中断分组2:2位抢占优先级,2位响应优先级

LED_Init(); /LED端口初始化

while(1)

{

LED0=0;/也可以使用 (库)GPIO_ResetBits(GPIOA,GPIO_Pin_8);

/寄存器GPIOA-ODR=~(18);

delay_ms(300);

LED0=1; /也可以使用 GPIO_SetBits(GPIOA,GPIO_Pin_8);

/寄存器 GPIOA-ODR|=18;

delay_ms(300);

}

}

使能PORTA时钟,这里说明下STM32的时钟树和AVR51等有很大的区别,它每个外设都会有自己的时钟,要使用一个外设必须要先开外设的时钟。这样也一定程度上减少了功耗。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    单片机试验一:点亮一个发光二极管;拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89S52的芯片,下面就看一下如何给它连线。 1、 电源:这当然是必不可少的了。单片机......
    开发的实战 3.大学学习的理论知识和实际的需求严重脱轨 我参加工作10多年了,一直从事单片机程序的开发工作,如果现在回到大学,拿他们的期末考试卷考试,我基本上可以确定自己是不及格。 一方......
    单片机main函数在中断函数里执行?;最近看了硬汉分享的一个内容:为什么复位中断服务程序里面直接调用的main函数,难道所有程序都在复位中断里面执行的? 首先,Reset_Handler......
    原来单片机main函数在这里执行;最近看了硬汉分享的一个内容:为什么复位中断服务程序里面直接调用的main函数,难道所有程序都在复位中断里面执行的? 首先,Reset_Handler 是单片机......
    STM32f103C8T6的优势和作用是什么?;对于入门STM32来说,这款单片机还是比较适合的。 早期我学习的时候,有个误区,就是刚入门就喜欢上高配,结果都是没玩到高级功能,开发......
    平台360元 单片机开发系统498元 单片机学习板138 无线nRF-9E5模块100元 51单片机试验开发板238元 Genius NSP通用编程器260元 Mini ARMDebugger330元......
    心来好好查资料,51单片机最大的好处就是网上资料非常多,你遇到的问题别人肯定也遇到过。作为学习者,问人可能更方便点,但一直这样是培养不出解决问题的能力的。 8、有些单片机初学者觉得看例程不好,觉得就等于看答案......
    怎么学? 他们给我的答案是可以先学汇编和 C语言。 C语言开发单片机会更加方便,我学习了一段时间汇编,但是感觉特别费劲,就放弃了,再加上学了汇编对后续的开发也没有什么实际意义,所以就直接学习C语言了。 我是......
    曝初中试卷出现多个涉华为题目,含孟晚舟回国路线、日本研究所位置等…官方紧急回应!; 近日,江苏省常州市一名家长反映,其儿子参加的“常州市2024年初中地理结业会考”试卷中出现了多个涉及的题目,并且......
    号采集中对R1,R2分压电路影响小,使电阻分压结果更加精准。 细心的朋友应该已经注意到了,在电路中去掉了用于保护的钳位二极管。 那么请问这样的电路当出现故障时,还具有保护单片机的能力吗? 答案是具有的,具体原因大家可以复习下运放参数中的输入输出轨至轨。 ......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>