STM32
直播中

china

16年用户 985经验值
擅长:14230
私信 关注
[问答]

如何去实现STM32F103RB最小核心板的主函数呢

STM32F103RC MINI开发板怎样采用LCD液晶显示接收与发送数据呢?
如何去实现STM32F103RB最小核心板的主函数呢?

回帖(1)

曾盼丽

2021-12-16 09:14:32
一个开发板是STM32F103RC MINI,板载了LCD液晶显示,因此采用该液晶显示接收与发送的数据。
另外一个板子是STM32F103RB最小核心板,采用外设串口,进行收发的显示。
采用的是通道0。通道的具体对接操作流程请看上一篇文章。
下面给出的是采用STM32F103RB最小核心板的主函数程序。其他的类似。

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "spi.h"
#include "24l01.h"   


int main(void)
{
    u8 tmp_buf[33];//加入字符串结束符         
        u8 ReceivedData; //串口接收数据
        u8 mode;
        u8 key=1;
        int t=0;
        delay_init();                     //延时函数初始化       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
        uart_init(9600);                 //串口初始化为9600
        LED_Init();                                  //初始化与LED连接的硬件接口
       
       
        NRF24L01_Init();            //初始化NRF24L01  
       
                  
        while(NRF24L01_Check())        //检查NRF24L01是否在位.       
        {
                printf("NRF24L01 Error");
                delay_ms(200);
               
                delay_ms(200);
        }                                                                  
        printf("NRF24L01 OK");
       
          while(1)
          {
         /* Wait until a byte is received */
  while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
    {
   
    /* read byte and print via usart2 it */
    ReceivedData = USART_ReceiveData(USART1);
        
        if (ReceivedData == '1')
                {
                                           
            GPIO_ResetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);  
            printf("LED1(ON),1陈豪杰最漂亮 核心板进入接收模式RXnn");
                  
                          NRF24L01_RX_Mode();
                       
                while(1)
                {                                                                                   
                        if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
                        {
                                tmp_buf[32]=0;//加入字符串结束符
                               
                                printf("接收data;%s n",tmp_buf);  
                               
                        }else delay_us(100);          
                        t++;
                        if(t==10000)//大约1s钟改变一次状态
                        {
                                t=0;
                                LED0=!LED0;  
       
        }
                }
                }
               
               
                else if(ReceivedData=='2')
                {
                GPIO_ResetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);  
           GPIO_SetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);                   
            printf("LED1(on and OFF),2陈豪杰最优秀 核心板进入发送模式TXnn");
                       
                        NRF24L01_TX_Mode();
                        while(1)
{               
                if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                                printf("Sended DATA:%s nn",tmp_buf);       
                                                               
                                key=mode;
                                for(t=0;t<32;t++)
                                {
                                        key++;
                                        if(key>('~'))key=' ';
                                        tmp_buf[t]=key;       
                                }
                                mode++;
                                if(mode>'~')mode=' ';            
                                tmp_buf[32]=0;//加入结束符       
     GPIO_ResetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);  
           GPIO_SetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);                               
                       
                        }else
                        {                                                                                          
                                printf("Send Failed ");
                       
                                                       
        }
    }
      
           }
               
               
                else if(ReceivedData=='0')
                {
           GPIO_SetBits(GPIOC,GPIO_Pin_13);;
                        delay_ms(150);               
            
            printf("LED1(OFF),0魔镜魔镜谁是世界上最美的人 核心板进入休眠nn");
        }
               
                }
               
        }
       
       

}

下面是串口的显示数据RF24L01 OKLED1(ON),1陈豪杰最漂亮 核心板进入接收模式RX
接收data;接收data;!"#$%&'()*+,-./0123456789:;<=>?@接收data;"#$%&'()*+,-./0123456789:;<=>?@A接收data;#$%&'()*+,-./0123456789:;<=>?@AB接收data;$%&'()*+,-./0123456789:;<=>?@ABC接收data;%&'()*+,-./0123456789:;<=>?@ABCD接收data;&'()*+,-./0123456789:;<=>?@ABCDE接收data;'()*+,-./0123456789:;<=>?@ABCDEF接收data;()*+,-./0123456789:;<=>?@ABCDEFG接收data;)*+,-./0123456789:;<=>?@ABCDEFGH接收data;*+,-./0123456789:;<=>?@ABCDEFGHI接收data;+,-./0123456789:;<=>?@ABCDEFGHIJ接收data;,-./0123456789:;<=>?@ABCDEFGHIJK接收data;-./0123456789:;<=>?@ABCDEFGHIJKL接收data;./0123456789:;<=>?@ABCDEFGHIJKLM接收data;/0123456789:;<=>?@ABCDEFGHIJKLMN接收data;0123456789:;<=>?@ABCDEFGHIJKLMNO接收data;123456789:;<=>?@ABCDEFGHIJKLMNOPNRF24L01 OKLED1(ON),1
举报

更多回帖

发帖
×
20
完善资料,
赚取积分