stm32程序设计分为两种(stm32程序结构)

程序设计 314
本篇文章给大家谈谈stm32程序设计分为两种,以及stm32程序结构对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、STM32的意思是什么呢?

本篇文章给大家谈谈stm32程序设计分为两种,以及stm32程序结构对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

STM32的意思是什么呢?

一、STM32简介

STM32F103器件采用Cortex-M3内核,CPU最高速度达72 MHz。该产品系列具有16KB ~ 1MB Flash、多种控制外设、USB全速接口和CAN。

ST在后续几年陆续推出了Cortex-M0+、Cortex-M4内核的芯片,并进行不断优化。

按内核架构分为不同产品,其中STM32F1系列有:

基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB

增强型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、 STM32F103VE、STM32F103ZE

互联型:STM32F105、STM32F107

二、STM32学习

学STM32嵌入式,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。硬件的寄存器类的东西还是要能看懂的,掌握基于板级的汇编和C编程。

主要需要学习的有:

基础操作:GPIO操作,串口操作,定时器操作,NVIC和中断,看门狗,DMA操作,ADC操作,SPI接口通信,IIC接口通信,CAN总线通信等。

进阶操作:低功耗操作,STM32时钟树,STM32实现位带特性,STM32启动过程详细分析,环形缓冲期的实现,软件定时器的设计,IO口模拟IIC的实现。

综合应用:STM32-IAP的实现,STM32-DAPLink的实现。

带操作系统的程序学习与开发:可用操作系统分析,rt-thread系统移植与学习,FreeRTOS移植与学习。

为什么aitium designer里面stm32芯片原理图有的是分成2部分

因为芯片引脚太多,一张原理图放不下,所以画成两部分,方便绘图。

另一原因,按功能,引脚号等信息分成不同的部分,有利于原理图的设计,原理图可读性更好。

stm32跟普通的51单片机在程序编写方面有什么区别?

1、库函数不同。由ST厂商推出的STM32系列单片机,ST厂商给了丰富的函数库,可以直接使用库函数,所以比起普通的51单片机在程序编写方面要更加的省时。

2、运行速度不同。普通的51单片机运行速度较慢,特别是双数据指针,而STM32系列单片机最高工作频率可达72MHz。

3、便利程度不同。51单片机的任何器件只需要配置寄存器打开就可以进行编程,而STM32系列单片机则需要先打开对应的时钟,包括开启后打开外部时钟(晶振)才开始工作。

4、资源不同。STM32的内部资源(寄存器和外设功能)较普通的51单片机都要多,基本上接近于计算机的CPU了,所以在程序编写上能有更多的选择。

5、编程语言选择不同。STM32基本不会选择汇编语言了,因为工程量巨大,寄存器太多了,位数也多,而51单片机则多使用汇编语言。至于C语言编程方面的区别就不大了。

参考资料来源:百度百科-stm32

参考资料来源:百度百科-51单片机

stm32中断编程要求:2个中断,2个优先级,2个初始化函数

同学,你的问题需要根据实际的情况来定

比如我们使用外部中断,下面我就结合自己的学习讲讲使用外部中断的一般步骤:

1、初始化对应的GPIO口。假如我们使用的是GPIOB。

(1)首先定义初始化用到的结构体名称。

GPIO_InitTypeDef GPIO_InitStructure;

说明一下:GPIO_InitTypeDef 是stm32给我们定义好的结构,里面有相应的成员变量,我们只需要定义结构体的名称即GPIO_InitStructure,然后配置它的成员。

(2)开启GPIOB的时钟。

开启时钟用到系统为我们提供好的函数

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

说明:因为我们要复用GPIO口,所以也要开启GPIO口的复用功能时钟RCC_APB2Periph_AFIO;

(3)配置结构GPIO_InitStructure。

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//选用管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_IPU;//设置输出模式,改模式是将stm32管脚内部拉高保证处于高电平,并且做输入管脚使用。

(4)这一步设置输入速度的我们可以不要,当GPIO口做输入时,不需要对速度进行配置

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

(5)GPIO_Init(GPIOB, GPIO_InitStructure);//调用初始化函数,将配置应用到GPIOB口中。

2、连接GPIO到EXTI

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//将GPIOB0口连接到EXTI0,可能有些同学就不明白了,为什么是EXTI0,这里简单的说明一下GPIO口如果连接的是0管脚,则对应EXTI0,如果是1管脚则对应EXTI1。

3、配置外部中断的触发方式

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line0;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init( EXTI_InitStructure);

4、设置中断优先级寄存器

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//这里我们选择分组2,也就是说给抢占优先级分配两位,给响应优先级分两位

5、配置中断控制寄存器(NVIC)

(1)NVIC_InitTypeDef NVIC_InitStructure;//这一步是给我们的结构体命名,下面是对结构进行配置

(2)NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//选择中断类型也就选择外部中断0,这些语句其实stm32都给我们,中断名称在IRQn_Type结构体中为我们定义好了,我们只需要选择一个我们要用的中断就好了,stm32f10xx.h中我们可以找到它。

(3)NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;//设置抢占优先级。

(4)NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;//设置响应优先级。

(5)NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//设置开启中断。可以理解为开启总中断。

(6)NVIC_Init(NVIC_InitStructure);//调用出事换函数,初始化这个中断。

6、最都不要忘记在stm32f10x_it.c中编写中断服务程序。不要忘记,清除中断标志位。

void PPP_IRQHandler(void)

{}

我们在这个函数中写中断程序,PPP意思就是设备。不过同学们要记住我们不能直接就在里面写我们要将PPP写该成我们的中断口,void EXTI0_IRQHandler(void) {}

这样才可以,课能同学又要问了怎样确定这个名称呢。

答案是我们要在stm32的启动文件startup_stm32f1xx.s这个汇编文件中找,就可以找到每个中断所对应的名称了。

慢慢学 其实没有我们想象的那么难

关于stm32程序设计分为两种和stm32程序结构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码