在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103ZE的電子鐘語音播報設(shè)計

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-24 11:59 ? 次閱讀

1.硬件平臺

  • CPUSTM32F103ZE
  • 屏幕:3.5寸TFTLCD屏
  • 語音播報: VS1053
  • SD卡、外擴(kuò)Sram

2.功能實(shí)現(xiàn)

本示例主要設(shè)計兩個界面:時間顯示界面和日歷界面
??1.通過按鍵切換界面;
??2.時間界面包含:時間表盤繪制、數(shù)字時間和日期顯示、鬧鐘設(shè)置;支持按鍵校時和鬧鐘時間設(shè)置;
??3.日歷界面支持查看日期;
??4.上電自動檢測字庫是否正常、報時語音包是否正常;支持SD卡字庫和語音包更新;

3.軟件設(shè)計

3.1 VS1053初始化及播放音頻

/**************硬件接口*****************
**VS_MISO -- PA6 主機(jī)輸入
**VS_MOSI -- PA7 主機(jī)輸出
**VS_SCK  -- PA5 時鐘
**VS_XCS  -- PF7 命令片選(低電平有效)
**VS_XDCS -- PF6 數(shù)據(jù)片選(低電平有效)
**VS_DREQ -- PC13 數(shù)據(jù)請求線(高電平表示可以接收數(shù)據(jù))
**VS_RST  -- PE6 復(fù)位腳(低電平復(fù)位)
**
*****************************************/

void VS1053_Init(void)
{
	/*1. 開時鐘*/
	RCC->APB2ENR|=1<<2;//PA
	RCC->APB2ENR|=1<<4;//PC
	RCC->APB2ENR|=1<<6;//PE
	RCC->APB2ENR|=1<<7;//PF
	GPIOA->CRL&=0x000FFFFF;
	GPIOA->CRL|=0x38300000;
	
	GPIOF->CRL&=0x00FFFFFF;
	GPIOF->CRL|=0x33000000;
	
	GPIOC->CRH&=0xFF0FFFFF;
	GPIOC->CRH|=0x00800000;
	
	GPIOE->CRL&=0xF0FFFFFF;
	GPIOE->CRL|=0x03000000;
	VS_XCS=1;
	VS_XDCS=1;
	VS1053_RST();
	VS1053_SetVoice(255,255);
	/*2.配置時鐘寄存器*/
	VS1053_WriteRegDat(VS1053_CLOCKF,0x9800);
}
/*SPI收發(fā)一個字節(jié)*/
u8 VS1053_SPI_ReadWriteData(u8 data_tx)
{
	u8 data_rx=0;
	u8 i=0;
	for(i=0;i<8;i++)
	{
		VS_SCK=0;
		if(data_tx&0x80)VS_MOSI=1;
		else VS_MOSI=0;
		VS_SCK=1;
		data_tx<<=1;
		
		data_rx<<=1;
		if(VS_MISO)data_rx|=0x01;
	}
	return data_rx;
}
/********************往寄存器中寫入數(shù)據(jù)******************
**
**形參:u8 addr --地址
**			u16 data  -- 寫入的數(shù)據(jù)
**********************************************************/
void VS1053_WriteRegDat(u8 addr,u16 data)
{
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS_XDCS=1;//數(shù)據(jù)片選拉高
	VS_XCS=0;//命令片選拉低
	VS1053_SPI_ReadWriteData(0x02);//寫指令
	VS1053_SPI_ReadWriteData(addr);	//寄存器地址
	VS1053_SPI_ReadWriteData(data>>8);
	VS1053_SPI_ReadWriteData(data>>0);//寫入數(shù)據(jù)
	VS_XCS=1;
}
/*******************從寄存器中讀取數(shù)據(jù)*******************/
u16 VS1053_ReadRegDat(u8 addr)
{
	u16 data=0;
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS_XDCS=1;//數(shù)據(jù)片選拉高
	VS_XCS=0;//命令片選拉低
	VS1053_SPI_ReadWriteData(0x03);//讀指令
	VS1053_SPI_ReadWriteData(addr);	//寄存器地址
	data=VS1053_SPI_ReadWriteData(0xff)<<8;
	data|=VS1053_SPI_ReadWriteData(0xff);
	VS_XCS=1;
	return data;
}
/****************音量調(diào)節(jié)*****************
**
**形參:u8 vol_l -- 左聲道 0~254
**      u8 vol_r -- 右聲道 0~254
**每個增量表示0.5db的衰減,值越大,音量越小
**注意:如果設(shè)置 VOL 的值為 0xFFFF,將使芯片進(jìn)入掉電模式。
**右聲道是高 8 位 左聲道是低 8 位
*******************************************/
void VS1053_SetVoice(u8 vol_l,u8 vol_r)
{
	u16 temp=vol_r<<8|vol_l;
	VS1053_WriteRegDat(VS1053_VOL,temp);
}
/***************VS1053硬件復(fù)位**************/
void VS1053_RST(void)
{
	//硬件復(fù)位
	VS_RST=0;
	Delay_Ms(20);
	VS_XDCS=1;//取消數(shù)據(jù)傳輸
	VS_XCS=1;//取消命令傳輸
	VS_RST=1;//完成復(fù)位
	//軟件復(fù)位
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑
	VS1053_WriteRegDat(VS1053_MODE,0x0804);//設(shè)置為新模式,進(jìn)行軟件復(fù)位
	Delay_Ms(2);	
	while(VS_DREQ==0){}//等待數(shù)據(jù)線空閑,復(fù)位完成
}
/****獲取解碼時間******/
u16 VS1053_Get_Time(void)
{
	u16 time=0;
	time=VS1053_ReadRegDat(VS1053_DECODE_TIME);
	return time;
}
/****清除解碼時間******/
void VS1053_Clear_Time(void)
{
	VS1053_WriteRegDat(VS1053_DECODE_TIME,0);
}
/**************播放音樂****************************/
u8 VS1053_PlayOneMusic(const char *data,u32 data_size)
{
	u32 i=0;
   	/*3.設(shè)置音量*/
	VS1053_SetVoice(50,50);
  for(i=0;i;i++)>

3.2 表盤與指針繪制

電子表盤和日歷
/*繪制表盤*/
void LCD_DrawClockDial(void)
{
  u8 buff[20];
	/*畫表盤*/
	LCD_Circle(160,160,150,BLACK);//畫圓
	LCD_Circle(160,160,151,BLACK);//畫圓
	LCD_Circle(160,160,152,BLACK);//畫圓
	/*畫刻度*/
	u16 i;
	for(i=0;i<360;i+=6)
	{
		LCD_DrawAngleLine(160,160,i,151,15,BLUE);//畫任意角度直線
	}
	for(i=0;i<360;i+=30)
	{
		LCD_DrawAngleLine(160,160,i,151,25,RED);//畫任意角度直線
	}
	/*顯示時間數(shù)據(jù)*/
	LCD_Display_Str(160-8,10+30,16,(u8 *)"12",BLACK);
	LCD_Display_Str(160-4,160+150-45,16,(u8 *)"6",BLACK);
	LCD_Display_Str(160+150-35,160-8,16,(u8 *)"3",BLACK);
	LCD_Display_Str(10+35,160-8,16,(u8 *)"9",BLACK);
  /*鬧鐘*/
  snprintf((char *)buff,sizeof(buff),"鬧鐘1:%s",alarm_clock1);
  LCD_Display_Str(Timeinfo.alarm1_x,Timeinfo.alarm1_y,24,(u8 *)buff,BLACK);
  snprintf((char *)buff,sizeof(buff),"鬧鐘2:%s",alarm_clock2);
  LCD_Display_Str(Timeinfo.alarm2_x,Timeinfo.alarm2_y,24,(u8 *)buff,BLACK);
}
/*繪制指針*/
static const char *celen_week[]={"一","二","三","四","五","六","日"};
void LCD_DrawTime(void)
{
  char buff[100];
	int time_sec=RTC_Time.sec;
	int time_min=RTC_Time.min;
	int time_h=RTC_Time.hour;
   static u8 stat=0;
	/*清除秒針*/
	LCD_DrawAngleLine(160,160,270+(time_sec-1)*6.0,110,110,WHITE);//清除上一秒
  /*處理時針*/
  LCD_DrawAngleLine(160,160,270+time_h*30.0+(time_min-1)*0.5,60,60,WHITE);//清除上次時針
  LCD_DrawAngleLine(160,160,270+time_h*30.0+time_min*0.5,60,60,BLACK);//畫當(dāng)前分位置
  /*處理分指針*/
  LCD_DrawAngleLine(160,160,270+(time_min-1)*6.0,90,90,WHITE);//清除上一分
  LCD_DrawAngleLine(160,160,270+time_min*6.0,90,90,BLACK);//畫當(dāng)前分位置
  //畫秒針
	LCD_DrawAngleLine(160,160,270+time_sec*6.0,110,110,RED);//畫當(dāng)前秒位置
   /*數(shù)字時間顯示*/
   stat=!stat;
   if(stat)
   {
      snprintf(buff,sizeof(buff),"%02d:%02d",time_h,time_min);
   }
   else 
   {
      snprintf(buff,sizeof(buff),"%02d %02d",time_h,time_min);
   }

   LCD_Display_Str(Timeinfo.time_x,330,24,(u8 *)buff,BLACK);
   snprintf(buff,sizeof(buff),"%04d/%02d/%02d 周 %s",RTC_Time.year,RTC_Time.month,RTC_Time.day,celen_week[RTC_Time.week-1]);
   LCD_Display_Str(Timeinfo.date_x,Timeinfo.date_y,24,(u8 *)buff,BLACK);
	 LCD_Refresh();
   if(time_sec==0 && time_min==0)
   {
     Voice_ReadData(voice_addr[time_h]);
     LCD_DrawAngleLine(160,160,270+(time_sec)*6.0,110,110,WHITE);//清除上一秒
   }
   snprintf(buff,sizeof(buff),"%02d:%02d",time_h,time_min);
   if((!strcmp(buff,(char *)alarm_clock1) || !strcmp(buff,(char *)alarm_clock2)) &&  time_sec==0)
   {
      LCD_Display_Str(LCD_WIDTH-24*3-30,Timeinfo.alarm1_y+12,24,(u8 *)"時間到!",RED);
      LCD_Refresh();
      Voice_ReadData(voice_addr[24]);
      LCD_Display_Str(LCD_WIDTH-24*3-30,Timeinfo.alarm1_y+12,24,(u8 *)"       ",RED);
      LCD_Refresh();
      LCD_DrawAngleLine(160,160,270+(time_sec)*6.0,110,110,WHITE);//清除上一秒
   }
}

3.3 整點(diǎn)報時語音獲取

文字轉(zhuǎn)語音網(wǎng)址:https://uutool.cn/text2voice/

文字轉(zhuǎn)語音

4.4 字庫加載、語音包加載

字庫和語音包檢測
  res=f_mount(&fs,"",1);
  if(res)
  {
    printf("磁盤掛載失敗ret=%d\n",res);
    snprintf(buff,sizeof(buff),"err%d",res);
    LCD_Display_Str(20+strlen("SD卡狀態(tài)")*12+20,20,16,(u8 *)buff,RED);
    LCD_Display_Str(20,50,16,(u8 *)"請檢查SD卡是否插入!",RED);
    LCD_Refresh();
    Delay_Ms(1000);
    goto AA;
  }
  else LCD_Display_Str(20+strlen("SD卡狀態(tài)")*12+20,20,16,(u8 *)"OK",RED);
	/*字庫檢測*/
	LCD_Display_Str(LCD_WIDTH/2-strlen("字庫檢測")/2*16,40,16,(u8 *)"字庫檢測",RED);
	LCD_Refresh();  
GBK_16:
	W25Q64_ReadData(GBK_16_ADDR-10,(u8*)buff,9);//GBK16_OK
	if(strstr(buff,"GBK16_OK"))
	{
		LCD_Display_Str(20,60,16,(u8 *)"GBK16    OK",RED);
		LCD_Refresh();
	}
	else 
	{
		LCD_Display_Str(20,60,16,(u8 *)"GBK16    NO",RED);
		LCD_Display_Str(LCD_WIDTH/2-strlen("更新GBK16字庫")/2*16,80,16,(u8 *)"更新GBK16字庫",RED);
		LCD_Refresh();
		if(SDcard_DownFont("0:/font/GBK_16.DZK",GBK_16_ADDR,16))//字庫更新
		{
			LCD_Display_Str(LCD_WIDTH/2-strlen("                 ")/2*16,80,16,(u8 *)"                 ",WHITE);
			LCD_Display_Str(10,80,16,(u8 *)"請將GBK_16.DZK放到/font/目錄下,重啟!",BLACK);
			LCD_Refresh();
		}
		else 
		{
			LCD_Display_Str(LCD_WIDTH/2-strlen("                 ")/2*16,80,16,(u8 *)"                 ",WHITE);
			LCD_Display_Str(20,100,16,(u8 *)"                   ",WHITE);
			LCD_Refresh();
			goto GBK_16;
		}
	}  
	/*GBK24_OK*/
GBK_24:
	W25Q64_ReadData(GBK_24_ADDR-10,(u8*)buff,9);
	if(strstr(buff,"GBK24_OK"))
	{
		LCD_Display_Str(20,100,16,(u8 *)"GBK24    OK",RED);
		LCD_Refresh();
	}
	else 
	{
		LCD_Display_Str(20,100,16,(u8 *)"GBK24    NO",RED);
		LCD_Display_Str(LCD_WIDTH/2-strlen("更新GBK24字庫")/2*16,120,16,(u8 *)"更新GBK24字庫",RED);
		LCD_Refresh();
		if(SDcard_DownFont("0:/font/GBK_24.DZK",GBK_24_ADDR,24))//字庫更新
		{
			LCD_Display_Str(LCD_WIDTH/2-strlen("                 ")/2*16,120,16,(u8 *)"                 ",WHITE);
			LCD_Display_Str(10,120,16,(u8 *)"請將GBK_24.DZK放到/font/目錄下,重啟!",BLACK);
			LCD_Refresh();
		}
		else 
		{
			LCD_Display_Str(LCD_WIDTH/2-strlen("                 ")/2*16,120,16,(u8 *)"                 ",WHITE);
			LCD_Display_Str(20,140,16,(u8 *)"                   ",WHITE);
			LCD_Refresh();
			goto GBK_24;
		}
	}  
  /*語音包檢測*/
	LCD_Display_Str(LCD_WIDTH/2-strlen("語音包檢測")/2*16,140,16,(u8 *)"語音包檢測",RED);
	LCD_Refresh();  
VOICE_STAT:
  Voice_ReadAddr(voice_addr);//獲取每個音頻文件存放位置
  for(i=0;i<25;i++)
  {
    if(voice_addr[i]==0)break;
  }
  if(i!=25)
  {
    LCD_Display_Str(20,140+20,16,(u8 *)"語音包    ERR",RED);
    LCD_Display_Str(LCD_WIDTH/2-strlen("更新語音包")/2*16,140+40,16,(u8 *)"更新語音包",RED);
		LCD_Refresh();
    if(Voice_Download_W25Q64("voice"))//將語音包數(shù)據(jù)寫入到W25Q64中
    {
      LCD_Display_Str(LCD_WIDTH/2-strlen("                 ")/2*16,160+60,16,(u8 *)"                 ",WHITE);
			LCD_Display_Str(10,140+60,16,(u8 *)"請將語音MP3放到/voice/目錄下,重啟!",BLACK);
			LCD_Refresh();
      goto VOICE_STAT;
    }
    else 
    {
			LCD_Display_Str(10,160+60,16,(u8 *)"語音包更新完成",RED);
			LCD_Refresh();
    }
  }
  else 
  {
    LCD_Display_Str(20,160+60,16,(u8 *)"語音包 OK",RED);
		LCD_Refresh();
  }
  f_unmount("");//取消SD卡掛載
  LCD_Display_Str(10,160+100,16,(u8 *)"系統(tǒng)文件自檢完成,請移除SD卡!",RED);
  LCD_Display_Str(55,160+130,24,(u8 *)"歡迎使用電子時鐘!",RED);
  LCD_Display_Str(75,160+165,24,(u8 *)"正在啟動中",RED);

4.5 主函數(shù)

VS1053_Init();//VS1053初始化
  LCD_DrawClockDial();
	RTC_Init();//RTC初始化
  rtc_stat=1;
  u8 touch_stat=0;
  u16 x1,x2,y;
	while(1)
	{
      if(usart1_flag)
      {
        usart1_rx_buff[usart1_cnt]='\0';
        printf("rx:%s\r\n",usart1_rx_buff);
        //rx:*20210609115254
//        printf("usart1_rx_cnt=%d\n",usart1_cnt);
        if(usart1_rx_buff[0]=='*' && usart1_cnt == 15)
        {
          RTC_Time.year=(usart1_rx_buff[1]-'0')*1000+(usart1_rx_buff[2]-'0')*100+(usart1_rx_buff[3]-'0')*10+(usart1_rx_buff[4]-'0')*1;
          RTC_Time.month=(usart1_rx_buff[5]-'0')*10+(usart1_rx_buff[6]-'0')*1;
          RTC_Time.day=(usart1_rx_buff[7]-'0')*10+(usart1_rx_buff[8]-'0')*1;
          RTC_Time.hour=(usart1_rx_buff[9]-'0')*10+(usart1_rx_buff[10]-'0')*1;
          RTC_Time.min=(usart1_rx_buff[11]-'0')*10+(usart1_rx_buff[12]-'0')*1;
          RTC_Time.sec=(usart1_rx_buff[13]-'0')*10+(usart1_rx_buff[14]-'0')*1;
          printf("%d/%d/%d -- %d:%d:%d\r\n",RTC_Time.year,
                                            RTC_Time.month,
                                            RTC_Time.day,
                                            RTC_Time.hour,
                                            RTC_Time.min,
                                            RTC_Time.sec);
          
          //RTC時間校準(zhǔn)
         Time_Conversion_Sec(RTC_Time.year, RTC_Time.month,RTC_Time.day,RTC_Time.hour,RTC_Time.min,RTC_Time.sec); 
         LCD_Clear(WHITE);
         LCD_DrawClockDial();
        }      
        usart1_flag=0;
        usart1_cnt=0;
      }
      if((key_val&1<<0) && rtc_stat!=1)//時鐘界面
      {
        key_val&=~(1<<0);
        rtc_stat=1;
        LCD_Clear(WHITE);
        LCD_DrawClockDial();
      }
      else if(key_val&1<<1)//日歷界面
      {
         key_val&=~(1<<1);
         rtc_stat=2;
         LcdDrawcalen(RTC_Time.year,RTC_Time.month,RTC_Time.day);
         u16 year=RTC_Time.year;
         u8 month=RTC_Time.month;
         u8 day=RTC_Time.day;
         while(1)
         {
           if(key_val)break;
           touch_stat=XPT2046_ReadXY();
           if(touch_stat)
           {
              x1=touch_info.x;
              while(T_PEN==0)//等待松開
              {
                XPT2046_ReadXY();
                x2=touch_info.x;
              }
              if(x1-x2>20)
              {
                if(month>=12)
                {
                  month=1;
                  year++; 
                }
                else month++;
                LcdDrawcalen(year,month,day);
              }
              else if(x2-x1>20)
              {
                if(month<=1)
                {
                  month=12;
                  year--; 
                }
                else month--;
                LcdDrawcalen(year,month,day);
              }
           }
         }
      }
      touch_stat=XPT2046_ReadXY();
      if(touch_stat && rtc_stat==1)////進(jìn)入時間設(shè)置
      {
        y=touch_info.y;
        if(y<=Timeinfo.time_y+24 && y>=Timeinfo.time_y)
        {
          u16 hour=RTC_Time.hour;
          u8 min=RTC_Time.min;
          u16 year=RTC_Time.year;
          u16 month=RTC_Time.month;
          u16 day=RTC_Time.day;
          Time_Calibration(year,month,day,hour,min);
          //printf("設(shè)置時間\r\n");
        }
        else if(y<=Timeinfo.alarm1_y+24 && y>=Timeinfo.alarm1_y)//設(shè)置鬧鐘時間1
        {
          u8 hour,min;
          sscanf((char *)alarm_clock1,"%02d:%02d",(int *)&hour,(int *)&min);
          //printf("hour=%d,min=%d\n",hour,min);
          Time_SetAlarm(hour,min,1);
        }
        else if(y<=Timeinfo.alarm2_y+24 && y>=Timeinfo.alarm2_y)//設(shè)置鬧鐘時間2
        {
          u8 hour,min;
          sscanf((char *)alarm_clock2,"%02d:%02d",(int *)&hour,(int *)&min);
          //printf("hour=%d,min=%d\n",hour,min);
          Time_SetAlarm(hour,min,2);
        }
      }
	}
}
鬧鐘調(diào)整和整點(diǎn)報時

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355985
  • 電子鐘
    +關(guān)注

    關(guān)注

    7

    文章

    189

    瀏覽量

    36944
  • STM32F10
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    15629
  • STM32F103ZET6
    +關(guān)注

    關(guān)注

    9

    文章

    67

    瀏覽量

    21128
收藏 人收藏

    評論

    相關(guān)推薦

    STM32應(yīng)用案例 基于STM32F103ZE開發(fā)的數(shù)碼相冊

    1.硬件平臺 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 觸控:電阻式觸摸屏xpt2046 SD卡、外擴(kuò)Sram
    的頭像 發(fā)表于 06-02 09:09 ?7344次閱讀
    <b class='flag-5'>STM32</b>應(yīng)用案例 基于<b class='flag-5'>STM32F103ZE</b>開發(fā)的數(shù)碼相冊

    STM32F103ZE最小系統(tǒng)版

    1.單片機(jī):STM32F103ZE最小系統(tǒng)版6.0?N1RVcKX0SpK?回????/寶或點(diǎn)***擊***鏈節(jié)至瑬覽器【STM32F103ZET6小系統(tǒng)板 STM32開發(fā)板 STM32
    發(fā)表于 08-06 07:51

    怎樣去設(shè)計一種基于STM32F103ZE的LD3320語音控制系統(tǒng)

    怎樣去設(shè)計一種基于STM32F103ZE的LD3320語音控制系統(tǒng)?有哪些操作步驟呢?
    發(fā)表于 12-14 06:14

    STM32F103ze簡介

    一、STM32F103ze 簡介本文中,采用的 MCU 具體型號為 STM32F103ZET6,其擁有豐富的外設(shè)資源(USB,IIC,USART,TIMER)等,大容量的RAM和ROM,以及上百
    發(fā)表于 02-11 06:04

    STM32F103ZE最小系統(tǒng)原理圖

    STM32F103ZE最小系統(tǒng)原理圖
    發(fā)表于 09-20 11:07 ?196次下載
    <b class='flag-5'>STM32F103ZE</b>最小系統(tǒng)原理圖

    基于stm32f103ze的四軸飛控代碼

    基于stm32f103ze的四軸飛控代碼
    發(fā)表于 01-13 10:21 ?30次下載

    嵌入式 STM32F103ZE主要特性

    Embest公司的STM32F103ZE ARM Cortex-M3嵌入式評估板采用ST公司的STM32F103ZE處理器,工作頻率72MHz.評估板集成了USB, CAN, SD卡接口
    發(fā)表于 05-08 11:17 ?1.5w次閱讀
    嵌入式 <b class='flag-5'>STM32F103ZE</b>主要特性

    基于STM32F103ZE的USART2 端口時鐘

    STM32F103ZE默認(rèn)的USART2就是PA03PA02,如果配置映射,USART2端口是PD05PD06了。
    發(fā)表于 06-04 07:26 ?6360次閱讀
    基于<b class='flag-5'>STM32F103ZE</b>的USART2 端口時鐘

    新版STM32F103ZE核心板原理圖詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是新版STM32F103ZE核心板原理圖詳細(xì)資料免費(fèi)下載。
    發(fā)表于 08-29 08:00 ?0次下載
    新版<b class='flag-5'>STM32F103ZE</b>核心板原理圖詳細(xì)資料免費(fèi)下載

    STM32F103ZE核心板電路原理圖和PCB圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103ZE核心板電路原理圖和PCB圖免費(fèi)下載。
    發(fā)表于 04-01 08:00 ?0次下載
    <b class='flag-5'>STM32F103ZE</b>核心板電路原理圖和PCB圖免費(fèi)下載

    新版STM32F103ZE核心板原理圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是新版STM32F103ZE核心板原理圖免費(fèi)下載。
    發(fā)表于 02-26 11:46 ?0次下載
    新版<b class='flag-5'>STM32F103ZE</b>核心板原理圖免費(fèi)下載

    新版STM32F103ZE核心板原理圖

    新版STM32F103ZE核心板原理圖免費(fèi)下載。
    發(fā)表于 06-18 11:14 ?0次下載

    STM32F103ZE構(gòu)建固件庫模板

    STM32F103ZE構(gòu)建固件庫模板
    發(fā)表于 12-08 18:51 ?13次下載
    <b class='flag-5'>STM32F103ZE</b>構(gòu)建固件庫模板

    基于STM32電子鐘語音播報

    硬件平臺: 主控制器:STM32F103ZE LCD屏、XPT2046觸摸屏、VS1053音頻解碼器 本示例主要設(shè)計兩個界面:時間顯示界面和日歷界面 1.通過按鍵切換界面; 時間界面
    發(fā)表于 05-25 11:40 ?0次下載

    STM32F103ZE最小系統(tǒng)板

    STM32F103ZE最小系統(tǒng)板,可能帶有一些不足
    發(fā)表于 03-30 18:18 ?0次下載
    主站蜘蛛池模板: 日韩一级视频| 黄色大片视频网站| 日韩基地1024首页| avbobo在线观看| 国内视频一区二区三区| 亚洲六月丁香六月婷婷花| 国产午夜视频在线观看| 性欧美xx| 黄视频网站观看| 女人张开腿 让男人桶个爽 免费观看| 久久青青成人亚洲精品| 91日韩精品天海翼在线观看| 手机在线你懂得| 很黄很黄的网站免费的| 天堂中文字幕在线| 久久精品视频5| 成zzzwww日本免费| 你懂的手机在线视频| 中文字幕在线一区二区三区| 一级a爱片久久毛片| 女人爽到喷水的视频大全在线观看| 天天色踪合合| 91成人在线免费视频| 日本三级最新中文字幕电影| www四虎影院| 国产午夜影院| 无内丝袜透明在线播放| 激情综合网婷婷| 人人草人人插| 午夜欧美性欧美| 日韩精品三级| 伊人网综合视频| 1024国产手机视频基地| 最近国语剧情视频在线观看| 日本黄段视频| 夜夜操天天爽| xxxx人成高清免费图片| 欧美日韩乱国产| 天天操天天干天天透| 亚洲网站在线看| 日本精高清区一|