查看: 8871|回复: 5

【望月追忆】带你入门STM32F0之四:串口

[复制链接]
  • TA的每日心情
    奋斗
    2013-9-16 09:51
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2012-12-10 17:20:58 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 upc_arm 于 2012-12-16 11:09 编辑

    USART中断类似外部中断  分别配置 时钟、GPIO、USART、NVIC
    配置时钟  使能时钟
    1.   /* Enable GPIO clock */
    2.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    3.   /* Enable USART clock */
    4.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    复制代码
    配置USART的GPIO,都配置成上拉使能。
    1. //GPIO
    2.   /* Configure USART Tx as alternate function push-pull */
    3.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    4.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    5.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    6.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    7.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    8.   GPIO_Init(GPIOA, &GPIO_InitStructure);

    9. <blockquote> GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    复制代码
    配置USART
    1. /* Connect PXx to USARTx_Tx */
    2.   GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);

    3.   /* Connect PXx to USARTx_Rx */
    4.   GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
    复制代码
    1. USART_InitStructure.USART_BaudRate = 9600;
    2.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    3.   USART_InitStructure.USART_StopBits = USART_StopBits_1;
    4.   USART_InitStructure.USART_Parity = USART_Parity_No;
    5.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    6.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    复制代码
    1. USART_Init(USART1, &USART_InitStructure);
    2.   /* Enable USART */
    3.   USART_Cmd(USART1, ENABLE);
    复制代码
    配置NVIC
    1.   //NVIC
    2.   /* Enable and set EXTI6 Interrupt */
    3. <blockquote>  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    复制代码
    main函数
    1. int main(void)
    2. {
    3.         uint8_t test = 0;
    4.         
    5.         LED_Init();
    6.         MyUSART_Init();

    7.   while (1)
    8.   {
    9.                 MyUSART_PutChar(USART1, test + '0');
    10.                 test++;
    11.                 if(test == 10)
    12.                 {
    13.                         test = 0;
    14.                 }
    15.                 SysTick_Delay_nms(500);
    16.                 LED_Ctrl_Toggle(LED1);
    17.   }
    18. }
    复制代码
    MyUSART_PutChar函数
    1. void MyUSART_PutChar(USART_TypeDef* USARTx, uint8_t ch)
    2. {
    3.         USART_SendData(USARTx, (uint8_t) ch);
    4.         while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET)
    5.         {}
    6. }
    复制代码
    PC机用串口连接开发板,打开串口助手,可以收到01234567890等数据。
    QQ截图20121210172037.jpg
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-9-16 09:51
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2012-12-10 18:01:58 | 显示全部楼层
    wyzamazon 发表于 2012-12-10 17:27
    就是代码啊  讲解在哪里

    仿照按键外部中断的就明白了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-6-4 13:58
  • 签到天数: 188 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2012-12-10 18:03:35 | 显示全部楼层
    wyzamazon 发表于 2012-12-10 17:27
    就是代码啊  讲解在哪里

    不用讲解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-5-9 12:20
  • 签到天数: 350 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-12-10 19:07:54 | 显示全部楼层
    必要的注释还是要写上吧。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-2-9 11:33:30 | 显示全部楼层
        看过。。。。。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2014-12-29 14:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-10-10 13:46:01 | 显示全部楼层
    沙发一下  看了一下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 22:57 , Processed in 0.141001 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.