咱们好,从今天开始.自己将自己在工作中遇到的问题 和学习体会跟咱们一同共享并讨论.下面跟咱们说一下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