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

基于STM3利用GPIO翻转模拟串口进行重定向经验分享

[复制链接]
攻城狮Melo 发布时间:2024-5-29 18:52
本期我们将利用定时器来模拟串口通信。

微信图片_20240529185142.png

首先我们要明白串口通信的帧格式,有一个低电平起始位,八个数据位(可选择校验位)+停止位组成。

需要注意的是,这里的数据位从低到高!!!

通常,我们不会设置校验位,选择一个停止位。

因此我们的一帧数据共一个字节+2位,总计十位。而波特率则是一秒钟可以传输多少位的数据。例如9600的波特率则代表着一秒钟传输9600位,总计960帧,所以总共960个字节,有效位960*8位代表数据。

以9600波特率为例,每一位的持续时间约为104us.

因此在CubeMX中我们可以设置定时器的触发时间为104us。

微信图片_20240529185139.png

  1. int num = 0;
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  3. {
  4.   
  5.   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,Data[num++]);
  6.   if(num == 10)
  7.   {
  8.     num = 0;
  9.     HAL_TIM_Base_Stop_IT(&htim1);//关闭定时器
  10.   }
  11. }
复制代码

我们在定时器中断回调函数中,将Data(一帧)中的数据逐位发送。

  1. void MyPrintf(int s)
  2. {
  3.   Data[0] = 0;
  4.   for(unsigned char i = 0;i<8;i++)
  5.   {
  6.     if(s & 0x01){
  7.          Data[i+1] = 1;
  8.       }
  9.       else{
  10.          Data[i+1] = 0;
  11.       }
  12.       s = s >> 1;
  13.   }
  14.   Data[9] = 1;
  15.   HAL_TIM_Base_Start_IT(&htim1);
  16. }
复制代码

写一个函数用来写入串口数据,并且启动定时器。

  1. MyPrintf('H');
  2.     HAL_Delay(100);
  3.     MyPrintf('e');
  4.     HAL_Delay(100);
  5.     MyPrintf('l');
  6.     HAL_Delay(100);<div class="blockcode"><blockquote>int fputc(int ch, FILE *f) {
  7.     // 发送单个字符
  8.     MyPrintf(ch);
  9.     HAL_Delay(50);//稍微延时,等待发送完成
  10.     // 返回发送的字符
  11.     return ch;
  12. }
复制代码

    MyPrintf('l');
    HAL_Delay(100);
    MyPrintf('o');
    HAL_Delay(100);

微信图片_20240529185136.png


成功的模拟了串口!!!

属于我的串口重定向!

  1. int fputc(int ch, FILE *f) {
  2.     // 发送单个字符
  3.     MyPrintf(ch);
  4.     HAL_Delay(50);//稍微延时,等待发送完成
  5.     // 返回发送的字符
  6.     return ch;
  7. }
复制代码

微信图片_20240529185132.png

微信图片_20240529185128.png

Win,成功的模拟了串口!

下期尝试添加标志位和设置波特率。



转载自:电路小白
如有侵权请联系删除

收藏 评论0 发布时间:2024-5-29 18:52

举报

0个回答

所属标签

相似分享

官网相关资源

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