STM32f103z8t6点灯+串口字符通信

一、点灯

keil里的main.c文件如下:

编译无误,即可去用ST-LINK下载烧录

硬件连接图如下:

ST-Link的连接图如下:

观测到板子灯亮即通电 否则可能板子烧坏了或者接线错误等

我们可以通过delay改变灯的闪烁频率

如pb5置1变短,led亮灯时间延长;同理pb5置0变长,led亮灯时间延长;

用tog也能运行,并且可以修改延迟,每500ms翻转一次

二、串口单字符通信

main.c:

usart.c:

1.串口初始化:

2.回调函数:

3.中断函数:

头文件:

usart.h:

编译无误后即可在stlink下载烧录

硬件图如下:

在xcom串口调试助手选择好对应的波特率、停止位、数据位,然后打开串口发送数据(英文输入法的字符)

三、串口字符通信

硬件连接图和二一样

main.c如下

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "stm32f10x.h"
#include "led.h"

int main()
{
    /********************************************************************************
    *    Delay_init();                //本实验使用的是SysTick时钟
    *    CPU_TS_TmrInit();          //已经使能宏,不需要初始化
    *    uart1_init(115200);        //串口初始化为115200,需要在usart.h中使能
    *    uart3_init(115200);        //串口初始化为115200
    ********************************************************************************/

    /* 初始化 */
    uart1_init(115200);     //usart初始化,波特率为115200,中断优先为NVIC_PriorityGroup_2
    LED_GPIO_Config();  //初始化led使用的GPIO口
    printf("--USART串口通讯--");
    while (1)
    {
        if(strUSART_Fram_Record .InfBit .FramFinishFlag)  	//如果串口接收到数据,并结束
        {
            //增加一个结束符。
            strUSART_Fram_Record .Data_RX_BUF [ strUSART_Fram_Record .InfBit .FramLength ]  = '\0';
            //将USART1接收到的东西全部打印出来,接收到的保存在这个数组里,再通过串口1发送出来,这样就能看到,我们发送的指令的响应,是否出错,
            printf( "\r\n%s\r\n", strUSART_Fram_Record .Data_RX_BUF );
            if(strstr ( strUSART_Fram_Record .Data_RX_BUF, "LED=1" ))
            {
                PCout(13) = 1; //PC口13引脚输出,高电平
                            printf("LED灭");
                Delay_ms(500);      //已经在delay.h中初始化

            }
                    else    if(strstr ( strUSART_Fram_Record .Data_RX_BUF, "LED=0" ))
            {
                PCout(13) = 0; //PC口13引脚输出,低电平
                                printf("LED亮");
                                Delay_ms(500);

            }
            strUSART_Fram_Record .InfBit .FramLength = 0;                             //清除接收标志
            strUSART_Fram_Record.InfBit.FramFinishFlag = 0;
        }

       
    }
}

运行得:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值