本帖最后由 是木科技 于 2019-3-22 10:39 编辑

uFun.jpg
收到小uFun已经第二周啦,周末正好有时间盘~~它,要盘它肯定先要有个稳定的IDE环境。
本人用的是KeilV5版本如图,
1.png
随便打开一个以前的工程,把芯片改成STM32F103RC,然后咱们开始配置串口,当然写程序
之前先要仔细看看电路图不是,要和电路图对应上,顺便说一句,我没用用HAL库配置工具
都是自己改,如果是用HAL库的同学更要仔细看电路图了,要把配置一一对应,来看下电路图
板子出口用的是USART1,PA9 TX PA10 RX,如图:
2.png
好了,心里有数了,开始修改配置代码,步骤说下,
配置IO模式->配置对应串口参数->配置中断相关参数->中断函数
下面贴代码:
IO设,PA9置成推挽复用输出,PA10设置成输入
  1. GPIO_InitTypeDef GPIO_InitStructure;
  2.         
  3.   GPIO_InitStructure.GPIO_Pin = UART1TX_Pin;
  4.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  5.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       \\推挽输出模式
  6.   GPIO_Init(UART1_GPIO, &GPIO_InitStructure);
  7.         
  8.   GPIO_InitStructure.GPIO_Pin = UART1RX_Pin;
  9.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  10.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   \\输入模式
  11.   GPIO_Init(UART1_GPIO, &GPIO_InitStructure);
USART1串口相关参数配置:
  1.   USART_InitTypeDef USART_InitStructure;
  2.         USART_InitStructure.USART_BaudRate = 115200;                                   //波特率 115200
  3.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  4.   USART_InitStructure.USART_StopBits = USART_StopBits_1;
  5.   USART_InitStructure.USART_Parity = USART_Parity_No;
  6.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  7.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;                //输入输出模式
  8.         USART_Init(USART1, &USART_InitStructure);
  9.         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  10.         USART_Cmd(USART1, ENABLE);                         //使能串口
配置中断参数,这个可以根据自己的程序实际情况来哦:
  1. NVIC_InitTypeDef NVIC_InitStructure;
  2. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  3.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  4.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
  5.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  6.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  7.         NVIC_Init(&NVIC_InitStructure);
注意全都参数都设置好了,别忘记打开串口时钟和IO时钟哦,最后把中断函数处理程序加上,
我这里是收到什么发送什么,如下:
  1. void USART1_IRQHandler(void)        
  2. {        
  3.         if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)
  4.         {
  5.                  USART_SendData(USART1,USART_ReceiveData(USART1));//收到什么发送什么
  6.         }
  7. }
接上板子,打开串口助手,用STlink debug一下,我们发送16进制 AA BB CC DD,板子返回也是AA BB CC DD,如图,
3.png 源码奉上:
游客,如果您要查看本帖隐藏内容请回复

最后上一张接线图,板子接STLINK(古老的家伙)接电脑USB:
4.jpg

更多好玩有趣的项目,可关注ZcorePlayer公众号哟~~
智芯player名片.jpg
第一期链接:https://mbb.eet-china.com/forum/topic/69612_1_1.html