day6 Arm 串口实验 基于串口点灯

.串口控制三盏灯亮灭

main.c

#include "led.h"
#include"uart.h"
void delay(int ms)
{
	int i,j;
	for(i=0;i<ms;i++)
	{
		for (j=0;j<2000;j++) 
		{
			/* code */
		}
		
	}
}

int main()
{
	 //led��ʼ��
    all_led_init();
	/*
    while(1)
    {
        LED1_ON();
        LED2_OFF();
        LED3_OFF();
        delay(500);
        LED2_ON();
        LED1_OFF();
        LED3_OFF();
        delay(500);
        LED3_ON();
        LED2_OFF();
        LED1_OFF();
        delay(500);
    }
	return 0;*/
       //���ڳ�ʼ��
    uart4_init();
    //char i;

    char buf[32];

    while(1)
    {
       // i=getchar();
       // putchar(i+1);
        //���յ����󣺼�������a�����ڹ�����ʾb 

        gets(buf);
		if(strcmp(buf,"LED1 ON")==0)
		{
			LED1_ON();
			puts("LED1_ON success\r\n");
		}
		else if(strcmp(buf,"LED2 ON")==0)
		{
			LED2_ON();
			puts("LED2_ON success");
		}
		else if(strcmp(buf,"LED3_ON")==0)
		{
			LED3_ON();
			puts("LED3_ON SUCEESSS");
		}
        //puts(buf);
		else
		{
			puts("error\r\n");
		}
    }

    return 0;
}

src/uart4.c

 #include "uart4.h"

void uart4_init()
{
    //ʹ��GPIOB GPIOG UART4����ʱ��
    RCC->MP_AHB4ENSETR |= (0x1<<1);//GPIOB
    RCC->MP_AHB4ENSETR |= (0x1<<6);//GPIOG
    RCC->MP_APB1ENSETR |= (0X1<<16);//UART4
    //����PB2��PG11�ܽŸ���
    //PB2
    GPIOB->MODER &= (~(0x3<<4));
    GPIOB->MODER |=(0x2<<4); 
    GPIOB->AFRL &= (~(0XF<<8));
    GPIOB->AFRL |= (0x8<<8);
    //PG11
    GPIOG->MODER &= (~(0x3<<22));
    GPIOG->MODER |=(0x2<<22); 
    GPIOG->AFRH &= (~(0XF<<12));
    GPIOG->AFRH |= (0x6<<12);
    //���ô��ڲ�ʹ�� UE=0
    USART4->CR1 &= (~(0X1));
    //����8λ����λ
    USART4->CR1 &= (~(0x1<<12));
    USART4->CR1 &= (~(0x1<<28));
    //����û����żУ��λ
    USART4->CR1 &= (~(0x1<<10));
    //����1λֹͣλ
    USART4->CR2 &= (~(0x3<<12));
    //����16��������
    USART4->CR1 &= (~(0x1<<15));
    //����ʱ�Ӳ���Ƶ
    USART4->PRESC &= (~(0xF));
    //���ò�����Ϊ115200
    USART4->BRR=0X22B;
    //ʹ�ܷ�����
    USART4->CR1 |= (0x1<<3);
    //ʹ�ܽ�����
     USART4->CR1 |= (0x1<<2);
    //ʹ��uart4
     USART4->CR1 |= (0x1<<0);
    
}

//����һ���ַ�
void putchar(char a)
{
    //���жϷ������ݼĴ����Ƿ�Ϊ��
     //��Ϊ�������ȴ�
    while(!(USART4->ISR&(0x1<<7)));
    //Ϊ�����������ݼĴ���д��a������
   USART4->TDR=a;//�����
    //д��������Ҫ�жϷ����Ƿ����ɣ������������ȴ�������������������
    while(!(USART4->ISR&(0x1<<6)));
}

//����һ���ַ�
char getchar()
{
    char a;
    //���жϽ������ݼĴ�������û��׼���õ�����
    //��������û��׼�����������ȴ�
    while(!(USART4->ISR&(0x1<<5)));
    //��������׼����������ȡ
    a=USART4->RDR;
    //��ȡ���Ͻ���ȡ�������ݷ���
    return a;
}

//�����ַ���
void puts(char *s)
{
    while(*s)
    {
        putchar(*s);
        s++;
    }
    putchar('\n');// '\n'�л�����һ��
    putchar('\r');//'\n'�س������л�����ͷ

}

//�����ַ�������
void gets(char *s)
{
    while(1)
    {
        *s=getchar();
        putchar(*s);
        if((*s)=='\r')
            break;
        s++;
    }
    *s='\0';
    putchar('\n');//����
}

//���д��ڽ����ַ��Ƚ�
int strcmp(char *src,char *dest)
{
	char *p =src ,*q=dest;
	while(*p==*q&&*p!='\0'&&*q!='\0')
	{
		p++;
		q++;
	}
	if(*p>*q)
	{
		return 1;
	}
	else if(*p<*q)
	{
		return -1;
	}
	else
	{
		return 0;
	}
}

uart4.h

#ifndef __UART4_H__
#define __UART4_H__
#include "stm32mp1xx_uart.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
void uart4_init();
void putchar(char a);
char getchar();
#endif

相关推荐

  1. ARM串口实现

    2024-03-23 06:30:06       45 阅读
  2. ARM串口控制点

    2024-03-23 06:30:06       42 阅读
  3. DAY6 作业 串口控制三盏亮灭

    2024-03-23 06:30:06       40 阅读
  4. arm-day6控制

    2024-03-23 06:30:06       34 阅读
  5. ARM实验串口控制LED亮灭

    2024-03-23 06:30:06       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 06:30:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 06:30:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 06:30:06       82 阅读
  4. Python语言-面向对象

    2024-03-23 06:30:06       91 阅读

热门阅读

  1. 嵌入式学习-ARM

    2024-03-23 06:30:06       38 阅读
  2. 项目立项管理

    2024-03-23 06:30:06       44 阅读
  3. 蓝桥杯每日一题:统计子矩阵

    2024-03-23 06:30:06       43 阅读
  4. Ubuntu中安装VSCode的一个指令

    2024-03-23 06:30:06       40 阅读
  5. 如何利用开源的大模型框架进行实际项目开发

    2024-03-23 06:30:06       41 阅读
  6. 前端根据pdf连接点击下载pdf而不是直接打开

    2024-03-23 06:30:06       42 阅读
  7. Hive常用函数 之 数值处理

    2024-03-23 06:30:06       43 阅读
  8. android AMS的面试题目

    2024-03-23 06:30:06       45 阅读
  9. Flink 架构深度解析

    2024-03-23 06:30:06       41 阅读
  10. webpack proxy工作原理?为什么能解决跨域?

    2024-03-23 06:30:06       46 阅读