打印
[STM32F1]

关于 STM32F103的串口1,2,3,4,5总计5个串口的案例!<申请原创.....

[复制链接]
楼主: 東南博士
手机看帖
扫描二维码
随时随地手机跟帖
41
東南博士|  楼主 | 2018-8-3 10:58 | 只看该作者 回帖奖励 |倒序浏览
//数据处理
void Date_Progress_Uart3(void)
{
    if(UART3_Flag.IDLE_FLAG==SET)//如果总线空闲中断
    {
        UART3_Flag.IDLE_FLAG=RESET;
        Progress_UART3();
    }
}

使用特权

评论回复
42
東南博士|  楼主 | 2018-8-3 10:59 | 只看该作者
//数据处理
void Date_Progress_Uart4(void)
{
    if(UART4_Flag.IDLE_FLAG==SET)//如果总线空闲中断
    {
        UART4_Flag.IDLE_FLAG=RESET;
        //查找并检索用户协议
        Progress_UART4();
    }
}

使用特权

评论回复
43
東南博士|  楼主 | 2018-8-3 10:59 | 只看该作者
//数据处理
void Date_Progress_Uart5(void)
{
    if(UART5_Flag.IDLE_FLAG==SET)//如果总线空闲中断
    {
        UART5_Flag.IDLE_FLAG=RESET;
        //查找并检索用户协议
        Progress_UART5();
    }
}

使用特权

评论回复
44
東南博士|  楼主 | 2018-8-3 11:01 | 只看该作者
void TASK_PRJ_UART1(void)

这里省略,因为涉及到了 一些项目的数据 解析 谢谢理解!

使用特权

评论回复
45
東南博士|  楼主 | 2018-8-3 11:01 | 只看该作者
//串口2控制的状态机
void TASK_PRJ_UART2(void)
{
    switch(UART2_Flag.SYS_STEP_UART)
    {
    //初始化
    case Sys_INIT:
        UART2_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //空闲
    case Sys_IDLE:
        break;
    }
}

使用特权

评论回复
46
東南博士|  楼主 | 2018-8-3 11:02 | 只看该作者
//串口3控制的状态机
void TASK_PRJ_UART3(void)
{
    switch(UART3_Flag.SYS_STEP_UART)
    {
    //初始化
    case Sys_INIT:
        UART3_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //帧校验错误
    case Sys_CRC_ERROR:
        UART3_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //空闲
    case Sys_IDLE:
        break;
    }
}

使用特权

评论回复
47
東南博士|  楼主 | 2018-8-3 11:02 | 只看该作者
//串口4控制的状态机
void TASK_PRJ_UART4(void)
{
    switch(UART4_Flag.SYS_STEP_UART)
    {
    //初始化
    case Sys_INIT:
        UART4_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //空闲
    case Sys_IDLE:
        break;
    }
}

使用特权

评论回复
48
東南博士|  楼主 | 2018-8-3 11:02 | 只看该作者
//串口4控制的状态机
void TASK_PRJ_UART4(void)
{
    switch(UART4_Flag.SYS_STEP_UART)
    {
    //初始化
    case Sys_INIT:
        UART4_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //空闲
    case Sys_IDLE:
        break;
    }
}

使用特权

评论回复
49
東南博士|  楼主 | 2018-8-3 11:02 | 只看该作者
//串口5控制的状态机
void TASK_PRJ_UART5(void)
{
    switch(UART5_Flag.SYS_STEP_UART)
    {
    //初始化
    case Sys_INIT:
        UART5_Flag.SYS_STEP_UART=Sys_IDLE;
        break;

    //空闲
    case Sys_IDLE:
        break;
    }
}

使用特权

评论回复
50
東南博士|  楼主 | 2018-8-3 11:03 | 只看该作者
/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{
    Disable_JTAG_SWD();//禁用JTAG使能SWD_PIN;
    /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
    UART1_Config();//
       
    DO_GPIO_Config();//所有DO_寄存器初始化;
    DO_GPIO_Init();//所有DO_IO口初始化;
    i2c_CfgGpio();
    BASIC_TIM_Init();//定时器时基1ms;

    while(1)
    {
                Get_GPIOS();

        if ( Basic_T500 > 500 ) /* 500 * 1 ms = 500ms 时间到 */
        {
            Basic_T500 = 0;
            Get_Tempture();
        }

        //串口1的解析与状态
        Date_Progress_Uart1();
        //串口1的解析与状态
        TASK_PRJ_UART1();
    }
}
/*********************************************END OF FILE**********************/

使用特权

评论回复
51
東南博士|  楼主 | 2018-8-3 11:03 | 只看该作者
这里 只用到了 串口1 的解析。。。。。。

使用特权

评论回复
52
51xlf| | 2018-8-3 22:55 | 只看该作者
              

使用特权

评论回复
53
i1mcu| | 2018-8-3 22:56 | 只看该作者
谢谢分享。

使用特权

评论回复
54
pmp| | 2018-8-3 22:57 | 只看该作者
東南博士 发表于 2018-8-3 09:40
STM32使用USART中断主要有一下几步:

1,定义中断结构体,和串口结构体

谢谢分享的。

使用特权

评论回复
55
mmbs| | 2018-8-3 22:57 | 只看该作者
東南博士 发表于 2018-8-3 09:42
2.关于第二点有要铺垫的三个情况,datasheet中
"当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但 ...

很全面。

使用特权

评论回复
56
1988020566| | 2018-8-3 22:57 | 只看该作者
网上不是有资料吗?

使用特权

评论回复
57
lzbf| | 2018-8-3 22:57 | 只看该作者
有源代码吗?

使用特权

评论回复
58
houjiakai| | 2018-8-3 22:57 | 只看该作者
東南博士 发表于 2018-8-3 09:41
1.空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的 ...

使用特权

评论回复
59
youtome| | 2018-8-3 22:57 | 只看该作者
5个串口很棒!

使用特权

评论回复
60
cemaj| | 2018-8-3 22:58 | 只看该作者
后期其他的拓展吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则