mini stm32开发板入门教程
更新时间:2023-06-07 06:14:01 阅读量: 实用文档 文档下载
- mini cooper推荐度:
- 相关推荐
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"
正在阅读:
mini stm32开发板入门教程06-07
生物地理实习报告 - 图文01-13
中国人民解放军各集团军编制战斗序列大全05-02
初中语文苏教版八年级上册第四单元第17课《记承天寺夜游》优质课07-01
2017年7月8日省三支一扶面试题01-29
苏科版物理中考总复习(考点清单)01-29
新版人教版一年级数学上册第九单元总复习教案及课堂练习题05-09
英语话剧表演剧本03-10
让优秀者更优秀 - “江苏高中第一班”南京师大附中2007届高三 -04-19
对拆迁意见的几点质疑一11-11
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 入门教程
- 开发
- stm32
- mini
- 2013年职业教育研究与分析方法
- 职场沟通与谈判技巧
- 2009年高考地理信息题训练卷五【热点题+详解】
- 《牧鹅散记》教案
- 初中物理全书概念总复习(中考复习必备)
- 住院患者PDCA循环式健康教育管理模式的实施
- 酶的应用和生物技术在其他方面的应用
- 5-文件系统和磁盘管理
- 一建管理必背重点
- 伏安法测电阻及内接法外接法误差分析
- 平面四杆机构结构设计
- 教育研究方法试题集及答案1
- 2013西藏自治区全国计算机等级考试二级笔试试卷VB理论考试试题及答案
- 基于Simulink的液压伺服系统动态仿真_李自光
- 医疗档案管理制度
- 适合女生在KTV时唱的歌
- 化学实验室自查报告
- 2014耳鼻喉科工作总结
- 人教版五年级语文下册10杨氏之子教学设计
- 高中英语标准词汇表3600