首页 > 其他分享 >stm8系列--usart收发

stm8系列--usart收发

时间:2024-05-29 11:37:49浏览次数:23  
标签:stm8 ENABLE usart TIM4 -- void UART1 Init myusart

 

void main(void)
{

    Init_UART1();
    Init_Timer4();

    enableInterrupts(); 

    while (1)
    {
        if(myusart.reflag>0)
        {
            Com_Handle();//收到什么回复什么;        
            myusart.recount=0;
            myusart.reflag=0;
        }    
    }  
}
MAIN

 

void Init_Timer4(void)
{
    TIM4_TimeBaseInit(TIM4_PRESCALER_128, 0x0f);  //1MS

  TIM4_ClearFlag(TIM4_FLAG_UPDATE);

    TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
    TIM4_Cmd(ENABLE);
}
Init_Timer4

 

MYUSART myusart;

void Init_UART1(void)
{
    UART1_DeInit();
    UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
    UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
}

void UART1_SendData8_Buff(uint8_t* data,uint8_t len)
{
    uint8_t i = 0;
    for(i=0;i<len;i++)
    {
        while(( UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET));
      UART1_SendData8(data[i]);    
    }
}

void Com_Handle(void)//发送什么回复什么
{
    UART1_SendData8_Buff(myusart.rcbuf,myusart.recount);
}
Init_UART1

 

 INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
 {
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
#if 1
        if( myusart.reflag==0)
        {
            myusart.timout=10;
            if(myusart.recount<_maxbuf)
            {
                myusart.rcbuf[myusart.recount++]=UART1_ReceiveData8();
            }
        }
#endif
        UART1_ClearITPendingBit(UART1_IT_RXNE);
        
 }
USART中断18

 

int time_i=0;

 INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
    #if 1
    if(myusart.timout>0)
    {
        if(--myusart.timout==0)
        {
            myusart.reflag=1; //收到一帧数据
        }
    }
    #endif
    time_i++;
    if(time_i>=300)
    {
        time_i=0;
        flag_send=1;
    }
    //300MS
    TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
TIM4中断23

 

标签:stm8,ENABLE,usart,TIM4,--,void,UART1,Init,myusart
From: https://www.cnblogs.com/zhouyuqing1024/p/18219837

相关文章

  • 122
      DDD 1.时态英语时态的四大难点: 1.时&态不区分 2.动词的变位/拼写的改变 3.助动词 4.与其它语法概念的混合 如与情态动词,被动时态的混合 基本句型主语+不及物动词主语+单及物动词+宾语主语+双及物动词+间接宾语+直接宾语 英语时......
  • [BZOJ2720 Violet 5]列队春游(概率期望+组合数学)
    列队春游问题描述输入格式:输出格式:样例输入:3123样例输出:4.33提示思路根据期望的线性性质,我们可以枚举每种可能的视野,然后求和对于每种视野,其期望为该种视野的视野长度*该种视野的概率设某个小朋友的视野期望为\(ans\),她的视野长度为\(L\)由于前面......
  • github源代码管理工具——使用介绍
    GitHub是一个面向开源及私有软件项目的在线代码托管平台,用户可以在GitHub上创建仓库(repository),将代码存储在仓库中,并与团队成员共享代码。并且提供了项目管理工具,如Issue跟踪、项目面板、里程碑、任务列表等,有助于团队项目的管理。除了Git代码仓库托管及基本的Web管理界面以外,还提......
  • 在Linux桌面上安装Moonlight并提示找不到硬件加速
    在Linux桌面上安装Moonlight并提示找不到硬件加速时,可能是因为缺少必要的依赖或配置错误。以下是一些可能的解决方案:安装必要的驱动程序:确保已安装最新的NVIDIA驱动程序。可以使用命令sudoapt-getinstallnvidia-driver进行安装。安装NVIDIA的硬件解码库:安装libnvid......
  • wpf 捕获全局异常
    App(){this.Startup+=App_Startup;}privatevoidApp_Startup(objectsender,StartupEventArgse){this.DispatcherUnhandledException+=App_DispatcherUnhandledException;AppDomain.CurrentDomain.UnhandledException+=CurrentD......
  • CodeServer 不能粘贴
    CodeServer在没有SSL证书时,由一浏览器的限制,默认是不能粘贴的. 在局域网中,如果不考虑安全性的话,可以考虑直接把加密关掉,就能复制粘贴了.配置文件如下:cert:True就可以,这个会使用自签的证书,没有安全保障,但粘贴功能可正常用. 1cat~/.config/code-se......
  • Spring常用Maven配置
    基于Spring6的常用Mavenpom文件依赖配置(包含父工程设置以及SpringBoot及其相关项目依赖):<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version&......
  • Linux 编译安装 Python
    解压:tar-zxfPythonXX.tgz安装依赖:yuminstalllibffi-develconfiguremkdirbuildcdbuild../configure--enable-optimizations--prefix=`pwd`/install--with-openssl=$OPEN_SSL_INSTALL_DIRBuild:make-j48makeinstall然后可以把install打包.注意,instal......
  • C++ - 结构体转cha*
    c语言结构体转cha*在C语言中,将结构体转换为char*通常意味着你想要获取结构体的内存表示,并将其视为字符数组。这种转换可以通过使用memcpy函数来实现。下面是一个简单的例子,展示了如何将结构体转换为char*: #include<stdio.h>#include<stdlib.h>#include<string.......
  • 多核通讯、线程通讯、进程通讯的区别
    多核通讯多核通讯通常指的是在多处理器系统中,不同核心之间的数据交换和协同工作。多核通讯的实现方式多种多样,包括但不限于高速缓存一致性协议、总线通信、交叉开关等。多核通讯的特点是高速率和低延迟,但实现起来较为复杂,需要硬件和操作系统层面的紧密合作。线程通讯线程通......