找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2783|回复: 3
收起左侧

基于stm32f103蓝牙控制双灯泡

[复制链接]
ID:274721 发表于 2018-1-11 11:35 | 显示全部楼层 |阅读模式
#include "includes.h"
#include "timer.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "stm32f10x_tim.h"
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
//void NVIC_Configuration(void);
//void  USART_Configuration(void);
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data);
extern void Delay_ms(unsigned long i);
extern void  LD3320_main(void);
/***********************************************************
* 名    称: 主函数
* 功    能:        程序入口
* 入口参数:  无
* 出口参数:        无
* 说    明:        无
* 调用方法:         无
**********************************************************/
int main(void)
{
  /* System Clocks Configuration */
//  RCC_Configuration();  //外设时钟配置
        vu8 key=0;       
        vu8 a;
//        delay_init();                     //延时函数初始化          
        KEY_Init();          //初始化与按键连接的硬件接口
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  uart_init(9600);
//        LD3320_main();                                //LD3320执行函数
        TIM3_PWM_Init(899,0);         //不分频。PWM频率=72000000/900=80Khz
       
        while(1)
        {
                key=KEY_Scan(0);        //得到键值
                   if(key)
                {               
                        if(key==KEY0_PRES)
                               
                                {        a=1;}
                               
                        if(key==KEY1_PRES)
                               
                                {        a=3;}
                               
                        if(key==WKUP_PRES)

                                {        a=2;}
                         
////                                 default:
////                                                break;
   }
                  switch(a)       
                                {       
                                        case 1:       
                                        {
                                                if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1))
                                                {         TIM_SetCompare2(TIM3,500);
                                        TIM_SetCompare1(TIM3,500);   }
                                          else
                                                {   TIM_SetCompare2(TIM3,0);
            TIM_SetCompare1(TIM3,0);        }               
                                        }
                                   break;
                                       
                                       
                                        case 2:
                                        {                
                                                Delay_ms(10);         
                     if(USART_RX_STA&0x8000)
                      {                                           
                        USART_RX_STA=0;
                switch(USART_RX_BUF[0])                   /*对结果执行相关操作,客户修改*/
                                                                         {
                                                                                  case 'a':                        /*命令“流水灯”*/
                                                                                        TIM_SetCompare2(TIM3,500);       
                                                                                             break;
                                                                                         case 'b':       
                                              TIM_SetCompare2(TIM3,0);       
                                      break;
                                                                                         case 'c':       
                                                                                   if( TIM3->CCR2 == 500|TIM3->CCR2 == 1000)                                                                                         
                                                                                         TIM_SetCompare2(TIM3,200);
                                                                                           break;       
                                                                                         case 'd':
                                                                 if( TIM3->CCR2 == 200| TIM3->CCR2 == 500)       
                                                                                        TIM_SetCompare2(TIM3,1000);
                         break;       
                      case 'e':                        /*命令“流水灯”*/
                                                                                        TIM_SetCompare1(TIM3,500);       
                                                                                             break;
                                                                                         case 'f':       
                                              TIM_SetCompare1(TIM3,0);       
                                      break;
                                                                                         case 'g':       
                                                             if( TIM3->CCR1 == 500|TIM3->CCR1 == 1000)                                                                                                                                         
                                                                                         TIM_SetCompare1(TIM3,200);
                                                                                           break;       
                                                                                         case 'h':
                                                                                if( TIM3->CCR1 == 200| TIM3->CCR1 == 500)       
                                                                                        TIM_SetCompare1(TIM3,1000);
                         break;                                                                                                                                                                                  
                                          default:
                                                                                                        break;
                               }

          }

               }
                                        break;
                                 
                                 case 3:
                                 {          LD3320_main();  }
                                         break;
  }
}
//                else Delay_ms(10);
}

/***********************************************************
* 名    称:void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
* 功    能:串口数据打印
* 入口参数:  
* 出口参数:
* 说    明:
* 调用方法:
**********************************************************/
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
{
       
                while(*Data)
                {
                        USART_SendData(USARTx, *Data++);    /*发送单个数据 */
                        while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);/* 检查指定的USART标志位即RESET=1时发送完成*/
                }                                                                                                       
}

/***********************************************************
* 名    称:void RCC_Configuration(void)
* 功    能:配置外设时钟
* 入口参数:  
* 出口参数:
* 说    明:
* 调用方法:
**********************************************************/
void RCC_Configuration(void)
{
  SystemInit();  
  /* Enable USART1, GPIOA, GPIOx and AFIO clocks */
    RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE, ENABLE); //开启相关的AHP外设时钟
  /* Enable USART2 clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}

/**
  * @brief  Configures the different GPIO ports.
  * @param  None
  * @retval : None
  */


void Delay_ms(unsigned long i)
{     
    while( i--)
       {       

        }
}       



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:251082 发表于 2018-6-25 14:09 | 显示全部楼层
很好谢谢楼主
回复

使用道具 举报

ID:259898 发表于 2018-10-25 17:38 | 显示全部楼层
学习了,嘻嘻
回复

使用道具 举报

ID:415948 发表于 2018-10-26 18:41 | 显示全部楼层
666好顶赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表