你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
feiante 发布时间:2015-1-7 09:43
STM32cubeMX推出一久了,而且现在除了F1以外基本上都有了。这段时间乘有点时间,来试试这个工具。
硬件资源:采用STM32F0的探索套件
实验目的:
1、完成串口发送8个数据功能,配置串口为接收中断,当串口接收到指定数目的数据时,产生中断,中断函数将接收的数据发送出来
2、本实验具有按键(PA0)中断功能,当按下按键,串口发送数据。
具体配置:
1、选择管脚,PA0用于按键,点击该引脚选择输入。
             PC8,PC9用于LED灯。点击该引脚选择输出。
             PA9,PA10用于串口1,串口模式选择Asynchronous。(但选择并配置了串口,这两个引脚自动就变绿了)
捕获.JPG
2、串口配置:(这个类似于我们以前编程时的串口初始化部分,包括波特率、数据位、停止位等)
捕获.JPG
这里需要注意的是:波特率最小都是115200,想设置9600,那只能最后在程序中改了。
3、串口中断配置:
捕获.JPG
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

新建文件夹.rar

下载

1.88 KB, 下载次数: 251

收藏 3 评论19 发布时间:2015-1-7 09:43

举报

19个回答
大秦正声 回答时间:2015-1-7 09:48:16
中断服务程序关键
字和以前不一样?
feiante 回答时间:2015-1-7 09:59:06
大秦正声 发表于 2015-1-7 09:48
中断服务程序关键
字和以前不一样?

它也有USART1_IRQHandler,但是中断处理函数是HAL_XXX_Callback,这个要单独写,它有这样一句话:xxxx不能修改。
大秦正声 回答时间:2015-1-7 10:01:40
谢谢回复
aaa999kk 回答时间:2015-1-7 10:06:42
测试的时候总需要经常中断的?
feiante 回答时间:2015-1-7 15:15:40
aaa999kk 发表于 2015-1-7 10:06
测试的时候总需要经常中断的?

什么意思?没有看懂
强仔00001 回答时间:2015-1-7 15:19:09
这工具好用么,我还是喜欢自己敲代码
feiante 回答时间:2015-1-7 15:21:55
强仔00001 发表于 2015-1-7 15:19
这工具好用么,我还是喜欢自己敲代码

感觉还可以吧,正在测试中
强仔00001 回答时间:2015-1-7 15:30:17
feiante 发表于 2015-1-7 15:21
感觉还可以吧,正在测试中

有空我也去试试
我是酱油哥 回答时间:2015-1-7 16:10:24
cube 真心不错 啊
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版