打印
[STM32F4]

STM32F4_Disvcovery 之串口调试!

[复制链接]
854|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
说书先生|  楼主 | 2016-8-31 19:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


新到手的开发板,先发一个自己做的一个简单串口例子
由于之前未使用过MDK510所以记录之,并分享给大家。


如下是STM32F4调试的串口程序:

#include "usart2.h"
  
  

void MyUartInit(void )
{
//NVIC_Config();                 
  STM_EVAL_COMInit();      
  USART_Configuration(115200);      
// USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  

}  

  
  
void STM_EVAL_COMInit(void)  
{  
  GPIO_InitTypeDef GPIO_InitStructure;  
  
  /* Enable GPIO clock */  
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);  
  /* Enable UART clock */  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);  
   
  /* Connect PXx to USARTx_Tx*/  
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1);  
  /* Connect PXx to USARTx_Rx*/  
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);  
  
  /* Configure USART Tx as alternate function  */  
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);  
  
  /* Configure USART Rx as alternate function  */  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);  
}  
  
  

void USART_Configuration(int BaudRate)  
{  
    USART_InitTypeDef USART_InitStructure;  
  
    USART_InitStructure.USART_BaudRate = BaudRate;  
    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); /* Configure USART1 basic and asynchronous paramters */  
    USART_Cmd(USART1, ENABLE);   /* Enable USART1 */  
}  
  

void NVIC_Config(void)  
{  
  NVIC_InitTypeDef NVIC_InitStructure;  
  
  /* Enable the USARTx Interrupt */  
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;  
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);  
}  
  
  
int fputc(int ch, FILE *f)  
{  
  /* Place your implementation of fputc here */  
  /* e.g. write a character to the USART */  
  USART_SendData(USART1, (u8) ch);  
  
  /* Loop until the end of transmission */  
  while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)  
  {  
  }  
  
  return ch;  
}
int fgetc(FILE *f)
{
  
  while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET);
  return (int)USART_ReceiveData(USART2);
}

void USART1_IRQHandler(void)
{
char c;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
   c = USART_ReceiveData(USART1);
   USART_SendData(USART1,c);
   USART_ClearITPendingBit(USART1,USART_IT_RXNE);
// GPIO_ToggleBits(GPIOD,GPIO_Pin_14);
}
}



usart.rar (42.13 KB)



沙发
androidbus| | 2016-8-31 19:38 | 只看该作者
这个还没有用到过,有机会一定试试效果

使用特权

评论回复
板凳
zhuomuniao110| | 2016-8-31 21:05 | 只看该作者
一个串口是如此的复杂,搞了这么多代码。

使用特权

评论回复
地板
说书先生|  楼主 | 2016-9-1 22:22 | 只看该作者
zhuomuniao110 发表于 2016-8-31 21:05
一个串口是如此的复杂,搞了这么多代码。

必学的,高技术就别怕复杂吗!

使用特权

评论回复
5
zhuomuniao110| | 2016-9-12 16:41 | 只看该作者
说书先生 发表于 2016-9-1 22:22
必学的,高技术就别怕复杂吗!

我最近在学ARM的MBED,那个串口简单。

使用特权

评论回复
6
zhuomuniao110| | 2016-9-12 16:41 | 只看该作者
跟那个Arduino一样简单的。一行指令就启动了串口。。

使用特权

评论回复
7
说书先生|  楼主 | 2016-9-12 23:39 | 只看该作者
zhuomuniao110 发表于 2016-9-12 16:41
跟那个Arduino一样简单的。一行指令就启动了串口。。

使用特权

评论回复
8
说书先生|  楼主 | 2016-9-12 23:41 | 只看该作者
zhuomuniao110 发表于 2016-9-12 16:41
我最近在学ARM的MBED,那个串口简单。

恩,确实,封装的挺好了,
用起来非常方便,
不过有时候也不是好事,
追求高性能,多功能的时候,
底层驱动还得自己写!

使用特权

评论回复
9
zhuomuniao110| | 2016-9-21 09:11 | 只看该作者
说书先生 发表于 2016-9-12 23:41
恩,确实,封装的挺好了,
用起来非常方便,
不过有时候也不是好事,

好多的外设芯片都有人提供驱动了,你写的驱动也可以让别人用。

使用特权

评论回复
10
androidbus| | 2016-9-21 09:13 | 只看该作者
感觉好复杂啊,逻辑都看不明白啊。

使用特权

评论回复
11
说书先生|  楼主 | 2016-9-22 22:26 | 只看该作者
androidbus 发表于 2016-9-21 09:13
感觉好复杂啊,逻辑都看不明白啊。

多看书,
多看手册,
多学别人的经验,
多敲代码,
你会学会的。

使用特权

评论回复
12
说书先生|  楼主 | 2016-9-22 22:44 | 只看该作者
zhuomuniao110 发表于 2016-9-21 09:11
好多的外设芯片都有人提供驱动了,你写的驱动也可以让别人用。

恩,高级语言服用起来很方便。

使用特权

评论回复
13
Snow7| | 2016-9-26 20:26 | 只看该作者
封装的好开发起来就方便了

使用特权

评论回复
14
wanglaojii| | 2016-9-26 20:30 | 只看该作者
哇 感觉不错呀、、、

使用特权

评论回复
15
说书先生|  楼主 | 2016-10-5 21:42 | 只看该作者
wanglaojii 发表于 2016-9-26 20:30
哇 感觉不错呀、、、

还好还好!

使用特权

评论回复
16
说书先生|  楼主 | 2016-10-5 21:47 | 只看该作者
wanglaojii 发表于 2016-9-26 20:30
哇 感觉不错呀、、、

还好还好!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

191

帖子

0

粉丝