基于ARMCORTEXM3的串行数据处理编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微机原理课程设计题目:基于ARMCORTEXM3的串行数据处理编程1:说明:1.工程描述:串口1接收到的1组严格按以下格式的数据,7个字节,格式为:FALED1LED2LED3LED4校验和FE其中LED1到LED4的取值为0或1若LEDN为1,将灯N点亮,否则灯N熄灭2:要求:1).在串口中断服务程序voidUSART1_IRQHandler(void)中用C语言编写代码接收数据到缓冲区(若干个字节的数组)2)不允许在中断服务程序中判断校验和是否正确,不允许在中断服务程序中点亮和熄灭灯,校验和点亮和熄灭灯的操作应该在主程序中执行。3).要求每接收到一组数据都能进行处理,当未接收完一组数据的时候不应去对数据进行处理4)要求对硬件的操作采用寄存器编程方式,不使用库函数3.课程设计报告要求:1)包括主程序和中断服务程序的源代码,每行代码加注释2)画出程序执行的流程分析图3)格式要求如下:1.课程设计题目分析2.资料查找和学习过程3.代码和分析4.代码流程图5.心得2:参考资料:2.1原理图2.1.1MCU及其周围电路设计如图2.1.1为MCU及其周边电路。图2.1.1MCU及其周边电路3.启动配置2.复位电路1.唤醒电路4.高速晶振电路7.AD输入8.低速晶振电路5.AD参考电路6.后备电池2.1.2USB转串口电路设计USB转串口电路可以方便没有串口的笔记本电脑用户通过USB接口下载代码到FLASH中,及进行RS232串行通信。图2.1.2USB转串口接口电路USB转串口芯片是CP2102,该芯片稳定性较好。当其正常工作的时候,灯LED6亮。该芯片DP/D+引脚连MINIUSB接口的脚3,DM/D-引脚连MINIUSB接口的脚2,为一对USB输入输出线。TXD与RXD引脚接MCU的PA10(USART1_RX)和PA9(USART1_TX)。2.1.3按键、LED显示电路和其他接口按键、LED和蜂鸣器是常规的设备,除了RESET和WAKEUP按键外,开发板上还提供了2个按键,具有4个高有效的指示灯和蜂鸣器,电路如下图2.1.8所示。图2.1.3指示灯、按键、蜂鸣器电路2.2相关资料2.2.1STM32F103VET6(CORTEXM3内核的MCU)概况表项目解读内核ARM32-bitCortex-M3CPU核最高频率72MHz处理能力1.25DMIPS/MHz平均每个时钟执行1.25条指令,这是比较高的处理能力。FLASH512K字节Flash存储器SRAM64K字节SRAM电源和I/O输入范围2.0到3.6V模数转换器ADC3个12位ADC,16通道数模转换器DAC2个12位DAC,2通道GPIO80个,可忍受5V的高压调试串口调试(SWD)和JTAG接口定时器8个,TM1-TM8通信接口13个,5个串口,2个I2C,3个SPI,1个CAN,1个USB,1个SDIOFSMC有2.2.2CORTEXM3寄存器3.3.1GPIO寄存器GPIO寄存器包括:两个32位的配置寄存器(GPIOx_CRL,GPIOx_CRH)、两个32位的数据寄存器(GPIOx_IDR,GPIOx_ODR)、一个32位的置位/复位寄存器(GPIOx_BSRR)、一个16位的复位寄存器(GPIOx_BRR)、一个32位的锁定寄存器(GPIOx_LCKR)。以上所有寄存器不允许按位访问或字节访问,必须按32位字访问。1.配置寄存器(GPIOx_CRL,GPIOx_CRH)(x=A..E)STM32每个GPIO端口有两个32位配置寄存器,如GPIOC_CRL,GPIOC_CRH为端口C的配置寄存器。STM32一个端口有16位,也就对应芯片的16个管脚。CRL控制端口的低八位,CRH控制端口的高8位。图3.3.1GPIO配置寄存器CRL由图3.3.1,CRL寄存器共32位,4位1组,每组控制1个引脚的配置(输入输出模式)。例如,假设这个计算器是GPIOC-CRL,位31-28共4位,那么这4位控制了GPIOC的7脚的输入输出模式。假设要配置GPIO的IO口y,那么需要写CNFy[1:0]和MODEy[1:0]。MODE[1:0]配置输入输出模式,输出的速率:00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHzCNF[1:0]取值及含义根据配置为输入和输出有不同:输入模式下:00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留输出模式下00:通用推挽输出模式01:通用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式CRH寄存器除了控制的是高8位端口外,其结构和含义都与CRL完全相同。如果IO口是0-7号的话,则写CRL寄存器,如果IO口是8-15号的话,则写CR寄存器。例如,要设置GIPOD的4位端口为最高50M频率的推挽输出,15位端口位上拉下拉输入模式,应该设置如下:GPIOD-CRL的CNF4[1:0]为00,GPIOD-CRL的MODE4[1:0]为11。GPIOD-CRH的CNF7[1:0]为10,GPIOD-CRH的MODE7[1:0]为00。因此,编程如下:GPIOD-CRL&=0XFFF0FFFF;//清掉对位4的配置GPIOD-CRL|=0X00030000;//写位4的位置为0011GPIOD-CRH&=0X0FFFFFFF;//清掉对位15的配置GPIOD-CRH|=0X8000000;//写位15的配置为1000为什么要写的这么麻烦呢,就是因为只能32位操作,不能进行位操作的原因!如果是对整个PD口进行配置,才可以直接赋值。2.端口输入数据寄存器(GPIOx_IDR)和端口输出数据寄存器(GPIOx_ODR)GPIOx_IDR是只读,作输入数据寄存器,这个寄存器是32位的,并且只能是按16位进行编程操作。图3.3.2数据输入寄存器IDRDRy[31:16]:保留,读出始终是0.DRy[15:0]:端口输入数据(y=0…15)这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态(0或1)。GPIOx_ODR是可读可写的,作输入数据寄存器,这个寄存器是32位的,并且只能是按16位进行编程操作。图3.3.3数据输出寄存器ODRODRy[31:16]:保留。ODRy[15:0]:端口输出数据(y=0…15)实验证实,要读取某端口输入的数据,要设置端口为输入模式,然后通过IDR寄出去读取才是正确的。ODR反应了作为输出时,上一次写出的数据。例如,刚刚设置GIPOD的4位端口为最高50M频率的推挽输出,现在将其置1,可以编程如下:GPIOD-ODR|=14;//等同于GPIOD-ODR|=0x10;如果写成GPIOD-ODR=0x10有问题吗?有的,而且问题相当严重,因为不小心将GPIOD的其他端口都清0了!这可不是想要的结果。如果使GIPOD的位4端口再输出低电平,编程应该如下:GPIOD-ODR&=(~(14));//等同于GPIOD-ODR&=0xEF(11101111)如果使GIPOD的位4端口输出低电平,位5端口输出高电平,编程如下:GPIOD-ODR&=(~(14));GPIOD-ODR|=15;有点尴尬了,需要两条语句!而且条条语句都有回读操作!这样的操作在需要高实时性的场合,就不太合适了,而且大家可以看到,同步性差,需要先将位4设置为低电平,然后将位5设置为高电平,这中间是有时间间隔的!因此,为了更加方便而且有效率的编程,必须介绍下端口位设置/清除寄存器BSRR和端口位清除寄存器BRR设置。3.端口位设置/清除寄存器(GPIOx_BSRR)(x=A..E)通过设置BSRR或BRR寄存器来设置某一特定引脚的输出电平,而保持其他引脚输出不变,速度快,效率高。端口位设置/清除寄存器BSRR是专为方便编程设计的,该寄存器采用32位编程。BSRR寄存器结构如图3.3.4。图3.3.4端口位设置/清除寄存器BSRRBRy:清除端口x的位y(y=0…15)(端口x复位位y)。这些位只能写入并只能以字(16位)的形式操作。如果BRy为0:对对应的ODRy位不产生影响1:如果BRy为1:清除对应的ODRy位为0BSy:设置端口x的位y(y=0…15)(端口x设置位y)这些位只能写入并只能以字(16位)的形式操作。如果BSy为0:对对应的ODRy位不产生影响如果BSy为1:设置对应的ODRy位为1需要注意的是:如果同时设置了BSy和BRy的对应位,BSy位起作用。例如,将GIPOD的4位端口输出低电平,5位端口输出高电平,编程如下:GPIOD-BSRR=0x00100020;于是,一条语句就解决了,用示波器观察就会看到两位同时被设置。另外,如果想清除某位,而BSRR中的位清除在高16位,使用起来不是很方便,可以使用端口位清除寄存器BRR。4.端口位清除寄存器(GPIOx_BRR)(x=A..E)端口位清除寄存器BRR也是专为方便编程设计的,该寄存器采用16位编程。它的结构如下:图3.3.5端口位清除寄存器BRR高16位保留,设置BRR低16位的值位1,就可以清除(置0)该位。例如,将GIPOD的4位端口输出低电平,编程如下:GPIOD-BRR=14;这种操作避免了回读(&=或|=)效率高速度快!2.2.4串口寄存器这部分请自行参考STM32中文用户手册.2.3资料下载1.STM32开发板光盘链接:=1127872967&uk=2284230610密码:1xno2.

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功