专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32F107VCT6学习中,重映射这卡住了...
2019-03-23 19:59
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
6400
6
1446
大侠们,求重映射的详解和范例啊,小弟拿个开发板学到这卡住了... 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
daicheng
1楼-- · 2019-03-24 03:35
精彩回答 2 元偷偷看……
加载中...
霜天
2楼-- · 2019-03-24 05:15
我看着板子上USART3接口用的是485通信,三个引脚分别是PD8,PD9,PD7.这样的情况我不懂,对于第三个引脚是不是也要设置的,那样的话程序还要加点什么?纯粹新手...请见谅!
加载中...
daicheng
3楼-- · 2019-03-24 09:18
咱们就以串口3为例子吧:
GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE); 使能串口3映射
#define GPIO_PartialRemap_USART3 ((u32)0x00140010) 部分映射
#define GPIO_FullRemap_USART3 ((u32)0x00140030) 全部映射
看下面的图:
如果说的不好可以在讨论一下
加载中...
霜天
4楼-- · 2019-03-24 13:13
精彩回答 2 元偷偷看……
加载中...
yueni_zhao
5楼-- · 2019-03-24 15:15
void USART3_Configuration(uint32_t UART_baud) //波特率,如115200
{
USART_InitTypeDef USART_InitStructure;
GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);
/* USARTx configured as follow:
- BaudRate = 115200 baud
- Word Length = 8 Bits
- One Stop Bit
- No parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate = UART_baud;//115200;
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;
USART3_COMInit(&USART_InitStructure);
}
void USART3_COMInit(USART_InitTypeDef* USART_InitStruct)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD| RCC_APB2Periph_AFIO, ENABLE); //使能串口所有GPIO模块时钟,并使能AFIO模块时钟
/* Enable UART clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能串口模块时钟
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置TX引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //设置RX引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* USART configuration */
USART_Init(USART3, USART_InitStruct); //初始化USART
/* Enable USART */
USART_Cmd(USART3, ENABLE); //使能串口模块
}
波特率119200以上就会出现乱码,牛人说可能是我的485线太长了,9600一下没问题
加载中...
yueni_zhao
6楼-- · 2019-03-24 16:24
补充下,这个用的是PD和PD9
加载中...
一周热门
更多
>
相关问题
相关文章
嵌入式编译生成的HEX文件和BIN文件内容详解
0个评论
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
单片机中把部分Flash虚拟成Eeprom使用时,如何延长使用寿命
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
敢问路在何方,STM32迈出的第一步,却注定了它非凡的一生
0个评论
年工作时间真的就等于3年工作经验?也许你就不配
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE); 使能串口3映射
#define GPIO_PartialRemap_USART3 ((u32)0x00140010) 部分映射
#define GPIO_FullRemap_USART3 ((u32)0x00140030) 全部映射
看下面的图:
如果说的不好可以在讨论一下
{
USART_InitTypeDef USART_InitStructure;
GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);
/* USARTx configured as follow:
- BaudRate = 115200 baud
- Word Length = 8 Bits
- One Stop Bit
- No parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate = UART_baud;//115200;
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;
USART3_COMInit(&USART_InitStructure);
}
void USART3_COMInit(USART_InitTypeDef* USART_InitStruct)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable GPIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD| RCC_APB2Periph_AFIO, ENABLE); //使能串口所有GPIO模块时钟,并使能AFIO模块时钟
/* Enable UART clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能串口模块时钟
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //设置TX引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //设置RX引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* USART configuration */
USART_Init(USART3, USART_InitStruct); //初始化USART
/* Enable USART */
USART_Cmd(USART3, ENABLE); //使能串口模块
}
波特率119200以上就会出现乱码,牛人说可能是我的485线太长了,9600一下没问题
一周热门 更多>