mini stm32开发板入门教程

更新时间:2023-06-07 06:14:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

mini stm32开发板入门教程

[原创]MINI-STM32开发板入门教程

版权所有麦思网原创,转载请保留出处

[原创]MINI-STM32开发板入门教程(一)开发环境建立及其应用

入门准备:

我们常用的STM32开发编译环境为Keil公司的MDK(MicrocontrollerDevelopmentKit)和IAR公司的EWARM.在这里我们提供了比较稳定的新版本编译软件下载:MDK3.50点击此处下载EWARM5.40点击此处下载

限于篇幅,在我们的教程里面将先以MDK下的一个例子来介绍如何使用MDK进行嵌入式应用开发.MDK安装与配置:

基于MDK下的开发中基本的过程:(1)创建工程;(2)配置工程;

(3)用C/C++或者汇编语言编写源文件;(4)编译目标应用程序(5)修改源程序中的错误(6)测试链接应用程序

----------------------------------------------------------------(1)创建一个工程:

在uVision3主界面中选择"Project"->"NewuVisionProject"菜单项,打开一个标准对话框选择好你电脑中的保存目录后,输入一个你的工程名字后点确认.我们的工程中建了一个名字叫"NewProject"的工程.

从设备库中选择目标芯片,我们的MINI-STM32开发板使用的是STM32F103V8T6,因此选中STMicrocontroller下对应的芯片:

ARM32-bitCortex-M3Microcontroller,72MHz,64kBFlash,20kBSRAM,PLL,EmbeddedInternalRC8MHzand32kHz,Real-TimeClock,NestedInterruptController,PowerSavingModes,JTAGandSWD,3Synch.16-bitTimerswithInputCapture,OutputCompareandPWM,16-bit6-chAdvancedTimer,216-bitWatchdogTimers,SysTickTimer,2SPI,2I2C,3USART,USB2.0FullSpeedInterface,CAN2.0BActive,212-bit16-chA/DConverter,FastI/OPorts

mini stm32开发板入门教程

(15.73

KB)

2009-7-2821:44

(20.45

KB)

2009-7-2823:12

选择完芯片型号后会提示是否在目标工程中加入CPU的相关的启动代码,如下图所示.启动代码是用来初始化目标

mini stm32开发板入门教程

设备的配置,完成运行的系统初始化工作,因此我们选择"是",这会使系统的启动代码编写工作量大大减少.

(6.49

KB)

2009-7-2821:35

----------------------------------------------------------------(2)配置工程:

选择菜单中"Project"->"OptionforTarget"或者选择快捷菜单中的图标:

(7.83

KB)

2009-7-2821:52

因为MINI-STM32开发板上使用的就是8M的晶振且是使用的片内的RAM和ROM因此"taget"下我们都可以使用默认的配置;

在"Output"菜单下我们需要选中"CreatHexFile"来生成编译好的工程代码,此工程可以通过仿真器或者串口ISP烧录进开发板中.

注:ISP烧录过程我们将在入门教程二中给大家介绍."Listing""User"菜单中我们保持默认即可.

"C/C++"菜单为我们常用的菜单,这里简单的介绍下他们的具体功能:

PreProcesserSymbols中的Define,Undefine菜单表示是工程的宏定义中的变量,我们将在今后的教程中详细介绍这个功能.

Optimization为优化选项,Level0为不优化,这种模式最适合调试,因为不会优化掉代码,基本每个用到的变量都可以打断点.Level3为优化等级最高,最适合生产过程中下载到芯片中的代码.

IncludePath为工程中的包含路径,一般需将.h文件或者库文件的地址配置进去.

mini stm32开发板入门教程

(15.43

KB)

2009-7-2822:23

"Asm"和"Link"将在今后的高级教程中介绍.

"Debug"为我们调试使用的配置选项,"UseSimulator"为使用软件仿真.这里根据大家手里的仿真器来选择配置环境.如果你使用的是Ulink,那么就选择"UlinkCotexDebug",如果你选择的是JLINK,那么就选择"CotexM3Jlink",如果你使用的是ST公司出的简易仿真器ST-Link,那么你就选择"ST-LinkDebug".

注意:右边当中的选项"Runtomain{}"选项如果勾上就表示仿真时进入了就会进入到main函数,如果没有选上就会进入初始地址,你需要自己打断点运行到你的主程序main处.

mini stm32开发板入门教程

(16.47

KB)

2009-7-2822:35

当插上仿真器后选择上面右图中的Setting后会跳出一个仿真器的配置菜单.左边会自动识别出你的仿真器的信息.如下图为ULINK2的信息:

(16.64

KB)

2009-7-2822:40

对于SWJ选项为三线制调试,将在后面的高级教程中介绍.

mini stm32开发板入门教程

右下方有两个选项:

"VerifyCodeDownload":表示下载后校验数据

"Downloadtoflash":表示当仿真的时候先将目标代码下载到Flash中.

Trace菜单为跟踪配置,可以实时的将一些变量使用曲线的形式实时表示出来,我们将在今后的高级教程中介绍这一项功能.

注意:市面上目前的盗版Ulink2不支持这项功能,正版的支持,Jlink也不支持这项功能.

"FlashDownload"菜单用来配置使用仿真器程序下载的配置选项,大家务必选择好和你芯片配套的选项.如果你是使用的别人模板下修改为你的工程,这个选项请注意一下,如果不正确将不能将你的代码下载到芯片中.

配置好"Debug"后,那么"Utilities"可以不用配置.

如果你使用的是仿真器仿真,在你已经正确得将目标板和仿真器建立了物理连接后,请选择正确的仿真器进行配置.

[原创]MINI-STM32开发板入门教程(二)ISP在线下载程序

ISP:insystemprogramming

简介:

ISP:用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;

应用场合:1,ISP程序升级需要到现场解决,不过好一点的是不必拆机器了;

ISP的实现一般需要很少的外部电路辅助实现,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

主要是指代芯片的烧写方式,以往写片子需要把片子拿下来,离开电路,用编程器烧,换句话说,芯片不能不脱离应用系统进行写入。

ISP主要针对这个问题,使用JTAG或者串行口(MCU内部有BootLoader,通过指定的方式激活之,它可以和PC或其它上位机通过串口联系,不用使单片机离开应用系统而更新内部的程序/设置)进行程序的烧写操作。

因此,具有ISP功能的MCU可以不使用编程器进行编程。当然,实现ISP可能需要一些硬件电路支持,具体的在数据手册中有说明。

一般具备ISP功能后,就不要编程器了,而是使用下载线进行编程工作。但是不是说他们就一定不支持编程器了,具体型号具体分析。是否需要仿真器进行仿真和是否具备ISP和IAP没有必然的联系。只不过具备了IAP功能,可以在MCU内写入监控程序,模拟一个仿真器,当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。-------------------------------------------------------------------以上就是ISP的一些概念上的描述,现在通俗点说就是怎么利用工具把程序下载到芯片当中去.第一步:配置工程,输出编译后的代码.Hex文件:我们打开第一个我们的教程例子,GPIO_Test这个例子工程.先按照下面的步骤来配置一下工程:点击下图中的Option选项;

mini stm32开发板入门教程

下载(9.61

KB)

2009-7-3122:17

选中"Output"菜单下的"CreateHEXFile",并且在右边的"NameofExecutable"中填写我们生成编译代码的文件名称.

(10.26

KB)

2009-7-3122:17

配置完选项后,点击工程编译按钮,然后我们就可以在\Example2-GPIO\GPIO_test\output目录下面得到Gpio_Test.Hex文件了.

mini stm32开发板入门教程

(8.5

KB)

2009-7-3122:17

第二步:准备串口物理连接和设置Boot跳线选择芯片启动类型

先需要准备一根串口延长线,一头为公头,一头为母头的串口连接线(非交叉线),和一台有串口的电脑.(注意:如果您的电脑没有串口,请购买"USB转RS232"的硬件设备来扩充你电脑的串口.)

将Mini-STM32的J1跳线帽跳至2,3两脚上选择芯片从内部的Boot区启动,上电后会先进入ISP状态.连接串口线至你的电脑上的串口

将USB延长线连接至你的电脑上给Mini-STM32开发板供上5V电源.当开发板上的电源指示灯点亮后一切准备就绪.

第三步:配置ISP下载软件mcuisp.exe:

您可以点击下载稳定版的mcuispV0.975版本的软件:2009-7-3122:43

mcuisp.rar(576.58KB)下载次数:

821

打开mcuisp.exe绿色软件,

选择好您连接至开发板使用的电脑上的串口,可以通过搜索串口菜单来自动搜索出你电脑上的串口信息.在左上方的"程序文件"选择你准备烧入芯片中的代码,就是前面我们生成的Gpio_Test.Hex.然后在菜单选项栏上选择"STMISP"菜单,点击"读STM32器件信息"命令按钮.我们会在右边的信息框中显示出连接成功的信息:如图所示:

mini stm32开发板入门教程

(23.51

KB)

2009-7-3122:41

选择上"校验"和"编程后运行"两个选项后点击"开始编程".会报出程序成功烧入芯片的一些信息,如下:

------------------------------------------------------------------DTR电平置高(+3-+12V),复位

RTS置高(+3-+12V),选择进入BootLoader...延时100毫秒

DTR电平变低(-3--12V)释放复位RTS维持高

开始连接...3,接收到:1F

在串口COM4连接成功@115200bps,耗时343毫秒芯片内BootLoader版本号:2.1芯片PID:00000410

芯片FLASH容量为128KB

芯片SRAM容量为65535KB(此信息仅供参考,新版本芯片已不包含此信息)96位的芯片唯一序列号:33006C065839353235581943读出的选项字节:

A55AFF00FF00FF00FF00FF00FF00FF00全片擦除成功

第547毫秒,已准备好

共写入2KB,进度100%,耗时4343毫秒成功从08000000开始运行

----------------------------------------------------------------这个时候您可以看到您手中的Mini-STM32开发板上的两个红色LED有规律的轮流点亮,说明程序已经成功的烧入芯片了.

最后您在断电后将Mini-STM32上J1的跳线帽跳至1,2引脚上,重新上电后,程序就可以正常运行了.

mini stm32开发板入门教程

[原创]MINI-STM32开发板入门教程(三)系统时钟SysTick

(一)背景介绍

在传统的嵌入式系统软件按中通常实现Delay(N)函数的方法为:for(i=0;i<=x;i++);

x

---对应于对应于N毫秒的循环值

对于STM32系列微处理器来说,执行一条指令只有几十个ns,进行for循环时,要实现N毫秒的x值非常大,而且由于系统频率的宽广,很难计算出延时N毫秒的精确值。针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N)。

(二)STM32SysTick介绍

Cortex-M3的内核中包含一个SysTick时钟。SysTick为一个24位递减计数器,SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1。计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(如果中断使能情况下)。

在STM32的应用中,使用Cortex-M3内核的SysTick作为定时时钟,设定每一毫秒产生一次中断,在中断处理函数里对N减一,在Delay(N)函数中循环检测N是否为0,不为0则进行循环等待;若为0则关闭SysTick时钟,退出函数。

注:全局变量TimingDelay,必须定义为volatile类型,延迟时间将不随系统时钟频率改变。

(三)STSysTick库文件

使用ST的函数库使用systick的方法1、调用SysTick_CounterCmd()2、调用SysTick_ITConfig()

3、调用SysTick_CLKSourceConfig()4、调用SysTick_SetReload()5、调用SysTick_ITConfig()6、调用SysTick_CounterCmd()

--失能SysTick计数器--失能SysTick中断--设置SysTick时钟源。--设置SysTick重装载值。--使能SysTick中断--开启SysTick计数器

(四)SystemTick工程实战

外部晶振为8MHz,9倍频,系统时钟为72MHz,SysTick的最高频率为9MHz(最大为HCLK/8),在这个条件下,把SysTick效验值设置成9000,将SysTick时钟设置为9MHz,就能够产生1ms的时间基值,即SysTick产生1ms的中断。

/*Configurethesystemclocks*/RCC_Configuration();SysTick_Configuration();

mini stm32开发板入门教程

第一步:配置RCC寄存器和SysTick寄存器RCC_Configuration:配置RCC寄存器voidRCC_Configuration(void){

/*RCCsystemreset(fordebugpurpose)*/RCC_DeInit();

/*EnableHSE*/

RCC_HSEConfig(RCC_HSE_ON);

/*WaittillHSEisready*/

HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus==SUCCESS){

/*HCLK=SYSCLK*/

RCC_HCLKConfig(RCC_SYSCLK_Div1);/*PCLK2=HCLK*/

RCC_PCLK2Config(RCC_HCLK_Div1);/*PCLK1=HCLK/2*/

RCC_PCLK1Config(RCC_HCLK_Div2);

/*Flash2waitstate*/

FLASH_SetLatency(FLASH_Latency_2);/*EnablePrefetchBuffer*/

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*PLLCLK=8MHz*9=72MHz*/

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/*EnablePLL*/

RCC_PLLCmd(ENABLE);

/*WaittillPLLisready*/

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}

/*SelectPLLassystemclocksource*/

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*WaittillPLLisusedassystemclocksource*/while(RCC_GetSYSCLKSource()!=0x08){}}

/*EnableGPIOAandAFIOclocks*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

mini stm32开发板入门教程

RCC_APB2Periph_AFIO,ENABLE);

}

SysTick_Configuration:配置SysTickvoidSysTick_Configuration(void){

/*SelectAHBclock(HCLK)asSysTickclocksource*/SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

/*SetSysTickPriorityto3*/

NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick,3,0);/*SysTickinterrupteach1mswithHCLKequalto72MHz*/SysTick_SetReload(72000);/*EnabletheSysTickInterrupt*/SysTick_ITConfig(ENABLE);}

第二步:配置SysTick中断函数

这里我们定义了一个TestSig全局变量,用于我们使用Keil软件自带的逻辑分析仪来分析.

volatilevu32TimingDelay=0;vu8TestSig=0;

voidSysTickHandler(void){

TimingDelay--;

if(TimingDelay%2){

TestSig=1;}else{

TestSig=0;}}

第三步:编写Delay延时函数

Delay:系统延时函数,使用系统时钟操作.voidDelay(u32nTime){

/*EnabletheSysTickCounter*/

mini stm32开发板入门教程

SysTick_CounterCmd(SysTick_Counter_Enable);TimingDelay=nTime;while(TimingDelay!=0);

/*DisabletheSysTickCounter*/

SysTick_CounterCmd(SysTick_Counter_Disable);/*CleartheSysTickCounter*/

SysTick_CounterCmd(SysTick_Counter_Clear);}

第四步:主函数中调用Delay

在Mini-STM32开发板上有两个LED灯,分别是PA0,PA1.我们做个流水灯程序,让他们循环点亮.

while(1){

GPIO_SetBits(GPIOA,GPIO_Pin_0);Delay(100);

GPIO_ResetBits(GPIOA,GPIO_Pin_0);Delay(100);

GPIO_SetBits(GPIOA,GPIO_Pin_1);Delay(100);

GPIO_ResetBits(GPIOA,GPIO_Pin_1);Delay(100);}

(五)仿真调试

把工程便宜通过后,进入软件仿真

如下图所示:点击工程快捷菜单的逻辑分析仪

(9.38

KB)

2009-8-1614:56

在逻辑分析仪中我们点击Setup按键会弹出安装对话框.

点右上方的"新建"图标,在菜单中输入"TestSig"这个全局变量.

添加完之后就可以点Close了.如果您仿真完可以点击左下方的"KillAll"删除所有监视变量.

mini stm32开发板入门教程

(50.63

KB)

2009-8-1614:58

全速运行后就可以看到下面的波形了哦

mini stm32开发板入门教程

(31.56

KB)

2009-8-1615:03

如果你使用仿真器在Mini-STM32上调试的话你还可以看到两个LED在跑跑马灯程序了.到此我们这章节的教程就结束了,相信大家也掌握了SystemTick的用法了.

[原创]MINI-STM32开发板入门教程(四)GPIO简单应用和外部中断

这个章节我们将学习最基本的STM32的GPIO的应用.我们将分为两个章节来学习.第一部份:GPIO的基本应用和IO口的配置第二部份:外部中断的使用

--------------------------------------------------------------------------

1:设计要求:

开发板上有2个LED,我们的目的为有规律的点亮LED1和LED2.当按键按下去的时候所有的灯灭,等待2秒钟后恢复有规律的点亮.

2:硬件电路:

mini stm32开发板入门教程

3:软件程序设计:

(1)根据要求配置GPIOA中的PA0,PA1为输出,PA3,PA8为输入

对于下面程序中的GPIO_InitStructure.GPIO_Speed和GPIO_InitStructure.GPIO_Mode推荐大家看下面两篇文章.备注:当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz、10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。备注:共有8种模式,可以通过编程选择:1.浮空输入2.带上拉输入3.带下拉输入4.模拟输入

5.开漏输出——(此模式可实现hotpower说的真双向IO)6.推挽输出

7.复用功能的推挽输出8.复用功能的开漏输出

模式7和模式8需根据具体的复用功能决定。

voidGPIO_Configuration(void){

GPIO_InitTypeDefGPIO_InitStructure;

/*ConfigurePA.asOutputpush-pull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,GPIO_InitStructure);

/*ConfigurePA3,PA8asinputfloating(EXTILine3,EXTILine8)*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,GPIO_InitStructure);

mini stm32开发板入门教程

}

(2)打开GPIOA的时钟,因为STM32是一个低功耗的MCU,每一个你使用的外围设备都需要单独开启时钟,如果不开启将不能使用,这个也是对于STM32初学者容易疏忽的地方/*EnableGPIOAandAFIOclocks*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_AFIO,ENABLE);

STM32共有5种时钟源,其中三种不同的时钟源可用作为驱动系统时钟(SYSCLK);

1、HSI由内部8MHzRC振荡器产生,它是可以直接用来作为系统时钟或经2分频后作为PLLSRC输入。HIS时钟频率在出厂时被校准在1%(25°C),在系统复位时,工厂校准值会被装载到时钟控制寄存器的HISCAL[7..0]位。用户可以通过更改HISCAL[4..0]来调整HSI频率。

另外时钟寄存器中有一个HSIRDY位用来指示HSIRC是不稳定工作,在时钟启过后,直到这个标志位置被硬件置1后,HSIRC时钟才被输出。

HSIRC时钟还可以用时钟寄存器中的HSION位来启动和关闭。HSI时钟同时也是HSE晶体荡振器的备用时钟源。

使用HSE时钟,程序设置时钟参数流程:

1、将RCC寄存器重新设置为默认值RCC_DeInit;

2、打开外部高速时钟晶振HSERCC_HSEConfig(RCC_HSE_ON);

3、等待外部高速时钟晶振工作HSEStartUpStatus=RCC_WaitForHSEStartUp();4、设置AHB时钟RCC_HCLKConfig;5、设置高速AHB时钟RCC_PCLK2Config;6、设置低速速AHB时钟RCC_PCLK1Config;7、设置PLLRCC_PLLConfig;8、打开PLLRCC_PLLCmd(ENABLE);

9、等待PLL工作while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)10、设置系统时钟RCC_SYSCLKConfig;11、判断是否PLL是系统时钟while(RCC_GetSYSCLKSource()!=0x08)

12、打开要使用的外设时钟RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

具体设置请参考下面的文章(3)设置外部中断,所有的GPIO口都可以作为外部中断源.具体可以参考下面这篇文章./*ConnectEXTILine3toPA.3*/

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3);/*ConfigureEXTILine3togenerateaninterruptonfallingedge*/EXTI_InitStructure.EXTI_Line=EXTI_Line3;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

mini stm32开发板入门教程

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(EXTI_InitStructure);

同样不要忘记打开时钟,我们在打开PA口的时候已经加上了RCC_APB2Periph_AFIO,这里再提醒大家一下./*EnableGPIOAandAFIOclocks*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_AFIO,ENABLE);最后就是编写外部中断入口函数.voidEXTI3_IRQHandler(void){

inti;

if(EXTI_GetITStatus(EXTI_Line9)!=RESET){

GPIO_SetBits(GPIOA,GPIO_Pin_0);

GPIO_SetBits(GPIOA,GPIO_Pin_1);for(i=0;i<=8000000;i++);

GPIO_ResetBits(GPIOA,GPIO_Pin_0);GPIO_ResetBits(GPIOA,GPIO_Pin_1);for(i=0;i<=1000000;i++)

/*CleartheEXTIline3pendingbit*/EXTI_ClearITPendingBit(EXTI_Line3);}}

不要忘记在中断函数处理完成后清掉标志位,不然会不停的进入中断.

(4)编译与调试

我们已经完成所有程序编写部份,接下来就是将工程编译成功后下载到我们的Mini-STM32开发板中进行调试和仿真.

如果看到LED有规律的点亮和熄灭,按下按钮后LED先是一起熄灭,在一起点亮,然后恢复有规律的点亮这个过程,说明我们已经达到我们的设计目标.

--------------------------------------------------------------------------总结:我们学习完了这篇教程之后,相信大家对下面几个方面的内容已经掌握了.

*GPIO的设置

*STM32GPIO的优势*STM32的时钟结构*外部中断的配置

*外部中断和外部事件的区别

mini stm32开发板入门教程

[原创]MINI-STM32开发板入门教程(五)异步串口双工通讯

(一)STM32的USART模拟介绍

通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。

它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIRENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。主要特性:

全双工的,异步通信NR标准格式

分数波特率发生器系统

-发送和接收共用的可编程波特率,最高到4.5Mbits/s可编程数据字长度(8位或9位)

可配置的停止位-支持1或2个停止位

LIN主发送同步断开符的能力以及LIN从检测断开符的能力

-当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符发送方为同步传输提供时钟IRDASIR编码器解码器

-在正常模式下支持3/16位的持续时间智能卡模拟功能

-智能卡接口支持ISO7816-3标准里定义的异步协议智能卡-智能卡用到的0.5和1.5个停止位单线半双工通信

使用DMA的可配置的多缓冲器通信

-在保留的SRAM里利用集中式DMA缓冲接收/发送字节单独的发送器和接收器使能位检测标志

-接收缓冲器满-发送缓冲器空-传输结束标志校验控制

-发送校验位

-对接收数据进行校验四个错误检测标志

-溢出错误-噪音错误-帧错误-校验错误10个带标志的中断源

-CTS改变

-LIN断开符检测-发送数据寄存器-发送完成

-接收数据寄存器-检测到总线为空-溢出错误-帧错误-噪音错误

mini stm32开发板入门教程

-校验错误多处理器通信--如果地址不匹配,则进入静默模式从静默模式中唤醒(通过空闲总线检测或地址标志检测)两种唤醒接收器的方式

-地址位(MSB)-空闲总线

(二)程序编写

(1)在RCC_Configuration函数中,打开串口时钟

/*EnableUSART1,GPIOA,GPIOxandAFIOclocks*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOx

|RCC_APB2Periph_AFIO,ENABLE);(2)设置串口的RTX,TDXIO口的属性voidGPIO_Configuration(void){

GPIO_InitTypeDefGPIO_InitStructure;

/*ConfigureUSART1Rx(PA.10)asinputfloating*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);

/*ConfigureUSART1Tx(PA.09)asalternatefunctionpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);}

(3)移植fputc函数

intfputc(intch,FILE*f){

/*Placeyourimplementationoffputchere*//*e.g.writeacharactertotheUSART*/USART_SendData(USART1,(u8)ch);

/*Loopuntiltheendoftransmission*/

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET){}returnch;}

(4)主函数中初始化串口设置

RCC_APB2Periph_GPIOA|

mini stm32开发板入门教程

USART_ART_Clock=USART_Clock_Disable;USART_ART_CPOL=USART_CPOL_Low;USART_ART_CPHA=USART_CPHA_2Edge;USART_ART_LastBit=USART_LastBit_Disable;/*ConfiguretheUSART1synchronousparamters*/

USART_ClockInit(USART1,&USART_ClockInitStructure);USART_ART_BaudRate=115200;

USART_ART_WordLength=USART_WordLength_8b;USART_ART_StopBits=USART_StopBits_1;USART_ART_Parity=USART_Parity_No;USART_ART_HardwareFlowControl=USART_HardwareFlowControl_None;

USART_ART_Mode=USART_Mode_Rx|USART_Mode_Tx;/*ConfigureUSART1basicandasynchronousparamters*/USART_Init(USART1,&USART_InitStructure);/*EnableUSART1*/

USART_Cmd(USART1,ENABLE);

(5)编写应用程序

printf("欢迎来到麦思网论坛");printf("");

printf("PleaseInputCharacterFromKeyboard");while(1)

{

if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET){

i=USART_ReceiveData(USART1);printf("%c",i&0xFF);/*printtheinputchar*/

}}

(三)调试仿真程序

(1)使用KeiluVision3通过ULINK2仿真器连接实验板,打开实验例程目录USART_TEST子目录下的USART.Uv2例程,

编译链接工程;

(2)使用MINI-STM32开发板附带的串口线,连接开发板上的COM和PC机的串口;

(3)在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序;

(4)选择硬件调试模式,点击MDK的Debug菜单,选择Start/StopDebugSession项或Ctrl+F5键,远程连接目标板并下载调试代码到目标系统中;

(5)例程正常运行之后会在超级终端显示以下信息:"欢迎来到麦思网论坛""PleaseInputCharacterFromKeyboard"

本文来源:https://www.bwwdw.com/article/xni1.html

Top