您的位置 首页 新能源

STM32 单片机之 串口重映射

大家好,从今天开始本人将自己在工作中遇到的问题和学习体会跟大家一起分享并探讨下面跟大家说一下STM32单片机的端口重映射,因为是以自

咱们好,从今天开始.自己将自己在工作中遇到的问题 和学习体会跟咱们一同共享并讨论.下面跟咱们说一下STM32单片机的端口重映射,因为是以自己为实例.这儿是以USART1的重映射为例..

因为我要一个TFT_LCD屏的主控板,考虑到FSMC 我选用了STM32F103VCT6 类型的CPU,一不当心串口接到USART1上了.因为在调程序时才发现错了,没得方法,只能经过端口重映射来处理.可是曾经没用过端口重映射,只闻其名,未用其身,所以..呵呵 …只能从头去看了.

STM32上有许多I/O口,也有许多的内置外想象I2C,ADC,ISP,USART等,为了节约引出管脚,这些内置外设基本上是与I/O口共用管脚的,也便是I/O管脚的复用功用。可是STM32还有一特别之处便是:许多复用内置的外设的I/O引脚能够经过重映射功用,从不同的I/O管脚引出,即复用功用的引脚是可经过程序改动的.读到这儿信任咱们都应该了解了端口重映射的一些概念了.原理上的东西不细说了,咱们能够看手册或许网上查,这方面的材料仍是许多的.下面说说我的调试阅历.

上面说过,我用的CPU是STM32F103VCT6 ,提到这儿跟咱们提一个小插曲.其时在老板让我换计划也便是CPU时,只说用VC的CPU,让我把要买的CPU告知担任买器材的人,因为我是第一次做,所以傻呵呵的写了张纸给了对方.内容是”STM32F103VC 10PCS”对方看了一眼就给我退了回来并加一句”类型不对,没写全”.我没理解,便也欠好持续问痴人问题,所以跑网上查,本来光这个CPU就不止一种.咱们选用的是T6也便是LQFP封装的工作环境为-40C — 80C.所以说咱们今后当心点儿 ..言规正传.不知道是什么原因 PCB制图时把串口接到USART1上了,其时也没介意,等我把USART测验程序写好烧进去硬件仿真时,串口给的是乱码,我其时就觉得古怪.把程序查看了好几遍便是查不出问题来,以为是硬件有问题,但忽然想到了STM有复用功用,心想会不会是这儿有鬼?所以找来datasheet 一看 ,水落石出


三个红框交汇处.STM32F103VCT6 这个CPU的USART1接的是PB6/PB7 可是上电初始化后默许功用并非是USART1.所以想要用串口功用 .必须用端口重映射..

咱们知道,STM32的单片机每个功用模块有自己的时钟体系,所以要想要调用STM32单片机的功用模块时必须先装备对应时钟,然后才能去操作相应的功用模块.端口重映射也相同.如图示:

重映射过程为:

1.翻开重映射时钟和USART重映射后的I/O口引脚时钟,

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

2.I/O口重映射敞开.

GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3.制造重映射引脚,这儿只需装备重映射后的I/O,本来的不需要去装备.

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);

只需要这三步,串口就能够正常使用了,简略吧? 可是我纠结了大半个小时才搞定的,很多工作都是说起来简单做起来难的,期望我今后多多行进.不要眼高手低,嗯 我正朝这个方向行进.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/260515.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部