完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);//开启端口B和复用功能时钟
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//使能端口重映射 GPIO_InitTypeDef GPIO_InitStructure; //uart 的GPIO重映射管脚初始化 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); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); USART_InitTypeDef USART_InitStructure; //串口参数配置:9600,8,1,无奇偶校验,无硬流量控制 ,使能发送和接收 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);//串口接收中断 USART_Cmd(USART1, ENABLE); |
|
|
|
|
冬冬5241 发表于 2018-9-10 08:31 我就是抄这个人的例程的,有问题,实习不了,可能是单片机不一样 |
|
|
|
|
|
|
|
|
|
|
|
我把程序的初始化,分成时钟,端口分别使能 |
|
|
|
|
|
|
|
|
|
|
|
单片机不一样?你的不是103系列吗?
|
|
|
|
|
|
|
|
|
|
|
|
你是用的IAR吧?关于 Error[Pe020]: identifier "AFIO_MAPR" is undefined
1、在程序前面加上定义。 #include 还不行的话就自己在程序开头重新定义一下就100% OK了。 #define AFIO_MAPR 0x......; 2、重新安装过软件。 也许是软件出错了,这个当然包括软件的安装目录有中文;安装的时候更改了安装路径等等都会出现这种情况。所以最好的安装方法就是“一路回车”。 |
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 wenyangzeng 于 2014-12-30 22:46 编辑
举个实例给你参考: AFIO->MAPR = 0X00000800; //定时器3 CCR2映像到PB5然后你参考手册应该能设置成功 |
|
|
|
|
|
重映射步骤为:
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); 简单的说 STM32的 io 有3个功能一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用) 如果配置成复用 则将使用第2个功能 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能 通常一个口的 复用+重映射有好多 不止两个 这时候就看你使能哪个设备了(哪个被使能就用哪个) 开复用 + 使能设备+ 是否重映射就可以决定这个io口到底使用哪个功能 |
|
|
|
|
|
不知都楼主用的什么版本的库,一直用3.5的,没发现有这个结构体...
|
|
|
|
|
|
应该是AFIO->MAPR来操作寄存器。
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1618 浏览 1 评论
1260 浏览 0 评论
1114 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
5494 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
4285 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 15:38 , Processed in 1.426881 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1367