查看: 13414|回复: 3

采用STM32cubeMX来配置串口接收中断

[复制链接]
  • TA的每日心情
    开心
    2019-7-11 11:26
  • 签到天数: 1982 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-3-5 10:56:58 | 显示全部楼层 |阅读模式
    分享到:
    STM32cubeMX推出一久了,而且现在除了F1以外基本上都有了。这段时间乘有点时间,来试试这个工具。
    硬件资源:采用STM32F0的探索套件
    实验目的:
    1、完成串口发送8个数据功能,配置串口为接收中断,当串口接收到指定数目的数据时,产生中断,中断函数将接收的数据发送出来
    2、本实验具有按键(PA0)中断功能,当按下按键,串口发送数据。
    具体配置:
    1、选择管脚,PA0用于按键,点击该引脚选择输入。
                 PC8,PC9用于LED灯。点击该引脚选择输出。
                 PA9,PA10用于串口1,串口模式选择Asynchronous。(但选择并配置了串口,这两个引脚自动就变绿了)



    2、串口配置:(这个类似于我们以前编程时的串口初始化部分,包括波特率、数据位、停止位等)

    这里需要注意的是:波特率最小都是115200,想设置9600,那只能最后在程序中改了。
    3、串口中断配置:

    4、完了以后就可以生成IAR或KEIL程序了,这一步大家都知道了,就不截图说明了。
    以下是我的测试程序。
    程序说明:
    1、首先定义发送接收数组
    uint8_t TxData[8]= {0x55,0x65,0x01,0x02,0x03,0x04,0x05,0x06};
    uint8_t RxData[8];
    2、如果是轮询方式发送数据,采用HAL_UART_Transmit(&huart1, TxData,8,10);  
    如果是中断方式接收数据,采用HAL_UART_Receive_IT(&huart1, RxData,8);  
    while (1)
      {
               HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
               HAL_Delay(1000);
               //HAL_UART_Transmit(&huart1,TxData,8,10);  /* 通过串口1发送数组TxData的8个数据 */
               HAL_UART_Receive_IT(&huart1, RxData,8);     /* 采用中断方式接收8个数据 */
      }
    3、串口接收中断服务程序:
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
    {
             HAL_UART_Transmit(&huart1,RxData,8,10);
    }
    4、按键中断服务程序:
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
      if (GPIO_Pin == GPIO_PIN_0)
      {
          HAL_UART_Transmit(&huart1,RxData,8,10);
      }
    }
    使用总结、疑问及需要注意的地方:
    1、串口中断配置只是具有串口全局中断,如何配置接收中断或发送中断,或空闲中断?(这点等待高手帮忙)
    2、HAL_UART_Receive_IT(&huart1, RxData,8);   如果放置在while循环中,那么就可以连续进行接收中断,RxData的值就会根据接收的数据发生变化,如果放在while外面,那么只进行一次接收中断。
    3、针对第2点,那么如果要一直进行中断配置,就要在主程序的while中调用,如果只是进行一次,那么就在需要的时候调用。
    4、由于不能配置中断类型,所以如果把中断服务函数HAL_UART_Transmit(&huart1, RxData,8,10);放在voidUSART1_IRQHandler(void)里面就只能收到第一个数据,其他是0。比如串口调试助手发送0x55,0x65,0x01,0x02,0x03,0x04,0x05,0x06,那么中断中发送出来的数据就是0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-9-26 22:38
  • 签到天数: 232 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-3-5 11:07:29 | 显示全部楼层
    不错呢 很好的学习分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-31 10:17
  • 签到天数: 447 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-3-5 12:28:42 | 显示全部楼层
    谢谢楼主分享!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-6-12 17:11
  • 签到天数: 142 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-4-7 09:44:17 | 显示全部楼层
    学习一下,hal库的函数太多了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 13:55 , Processed in 0.139853 second(s), 21 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.