2016年10月6日 星期四

NUCLEO-F030R8開發板利用STM32CubeMX來設定Timer中斷副程式

利用STM32F030R8的開發板NUCLEO-F030R8來設計Timer中斷副程式,是利用STM32CubeMx的軟體來產生程式Project。

1.打開STM32CubeMX軟體,點選New Project。

2.點選Board Selector,選擇NUCLEO-F0308,按OK鍵。

3.選擇TIM1,Clock Source 選擇Internal Clock。 

4.設定內部Clock,因TIM1使用APB1作為clock source,所以可以確認Clock為48MHz。 

 5.點選Configuration的TIM1。 

6.STM32F030R8的CPU為48MHz,TIM1CLK為48MHz。若要將Counter Clock設定為10KHz,
則Prescaler應該設定為(System Core Clk / 10KHz)-1 = 4799。 
若要產生每一秒中斷一次,頻率也就是1Hz。Update Rate為1Hz,依照公式可得出:
Update Rate = 1Hz = Counter Clock / (ARR+1) = 10KHz / (ARR+1)  。
可算出ARR = 9999 ,並把Prescaler填入4799,Counter Period填入9999。

7.NVIC Settings 選項內,TIM1interrupts Enabled打勾。


8.在Project Settings選擇程式編輯的軟體。這裡是選擇MDK-ARM V5(Keil)來編輯。


9.Project / Generate Code來產生Project Code,打開Project,在main.c內的/* USER CODE BEGIN 2 */後面加上HAL_TIM_Base_Start_IT(&htim1);來啟動TIM1。 


10.在Main.c內,/* USER CODE BEGIN 4 */與/* USER CODE END 4 */之間,
填入void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)函式 ;如下
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
          HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin); 
}
/* USER CODE END 4 */
程式動作是LED每1秒閃爍一次。

STM32CubeMX Timer中斷教學錄影

2016年9月29日 星期四

8x8矩陣LED驅動電路圖與source code

8x8矩陣LED驅動電路設計架構,主要由一顆STM32L031K6 ST MCU來控制,以掃描方式來一顆顆點亮LED,用一顆CR2032鈕扣電池就可以驅動,可以連續動作20個小時,下面圖式是8x8矩陣LED電路圖,電路架構很單純,就是一般的GPIO來控制矩陣LED。

接下來就是介紹8x8矩陣LED驅動的Source code介紹。

void All_ROW_H(void)
{
LED_ROW_A_H();
LED_ROW_B_H();
LED_ROW_C_H();
LED_ROW_D_H();
LED_ROW_E_H();
LED_ROW_F_H();
LED_ROW_G_H();
LED_ROW_H_H();
}
void All_ROW_L(void)
{
LED_ROW_A_L();
LED_ROW_B_L();
LED_ROW_C_L();
LED_ROW_D_L();
LED_ROW_E_L();
LED_ROW_F_L();
LED_ROW_G_L();
LED_ROW_H_L();
}
void All_COL_H(void)
{
LED_COL_A_H();
LED_COL_B_H();
LED_COL_C_H();
LED_COL_D_H();
LED_COL_E_H();
LED_COL_F_H();
LED_COL_G_H();
LED_COL_H_H();
}
void All_COL_L(void)
{
LED_COL_A_L();
LED_COL_B_L();
LED_COL_C_L();
LED_COL_D_L();
LED_COL_E_L();
LED_COL_F_L();
LED_COL_G_L();
LED_COL_H_L();
}

void Select_Turn_On_LED(uint8_t ROW,uint8_t COL)
{
All_ROW_L();
All_COL_H();
switch(ROW)
{
case 1 :
LED_ROW_A_H();
break;

case 2 :
LED_ROW_B_H();
break;

case 3 :
LED_ROW_C_H();
break;

case 4 :
LED_ROW_D_H();
break;

case 5 :
LED_ROW_E_H();
break;

case 6:
LED_ROW_F_H();
break;

case 7 :
LED_ROW_G_H();
break;

case 8 :
LED_ROW_H_H();
break;

default :
break;
}
switch(COL)
{
case 1 :
LED_COL_A_L();
break;

case 2 :
LED_COL_B_L();
break;

case 3 :
LED_COL_C_L();
break;

case 4 :
LED_COL_D_L();
break;

case 5 :
LED_COL_E_L();
break;

case 6:
LED_COL_F_L();
break;

case 7 :
LED_COL_G_L();
break;

case 8 :
LED_COL_H_L();
break;

default :
break;
}

Wait_delay(100);
}

void Smile_Face(void)
{
Select_Turn_On_LED(1,4);
Select_Turn_On_LED(1,5);
Select_Turn_On_LED(2,1);
Select_Turn_On_LED(2,2);
Select_Turn_On_LED(2,5);
Select_Turn_On_LED(2,6);
Select_Turn_On_LED(3,1);
Select_Turn_On_LED(3,2);
Select_Turn_On_LED(3,6);
Select_Turn_On_LED(3,7);
Select_Turn_On_LED(4,6);
Select_Turn_On_LED(4,7);
Select_Turn_On_LED(5,6);
Select_Turn_On_LED(5,7);
Select_Turn_On_LED(6,1);
Select_Turn_On_LED(6,2);
Select_Turn_On_LED(6,6);
Select_Turn_On_LED(6,7);
Select_Turn_On_LED(7,1);
Select_Turn_On_LED(7,2);
Select_Turn_On_LED(7,5);
Select_Turn_On_LED(7,6);
Select_Turn_On_LED(8,4);
Select_Turn_On_LED(8,5);
}
void main(void)
{
     HAL_Init();

     /* Configure the system clock */
     SystemClock_Config();

     /* Initialize all configured peripherals */
     MX_GPIO_Init();
     MX_TIM2_Init();
     while(1)
    {
           Smile_Face();
     }
}


2016年3月24日 星期四

Kinetis Design Studio 安裝流程

Kinetis Design Studio 是免費的開發軟體,但只有支援Kinetis MCU,其他MCU,像是ColdFire等MCU是不支援。
Kinetis Design Studio的介面與之前Freescale codewarrior很像,有使用過codewarrior應該很快就可以適應Kinetis Design Studio的編輯環境。
接下來就是Kinetis Design Studio的安裝介紹,有幾個軟體要去安裝。

1.先安裝Kinetis Design Studio V3.0.0軟體。
下載路徑: http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE#

2.再安裝Kinetis Software Development Kit (SDK)  , Kinetis SDK 1.3 Mainline版本。
下載路徑 : http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/development-platforms-with-mbed/software-development-kit-for-kinetis-mcus:KINETIS-SDK。

3.安裝KSDK_1.3.0_Eclipse_Update,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".








b.In the Install New Software dialog box, click the "Add" button in the upper right corner. Then, in the Add Repository dialog, select the "Archive" button.

















c.路徑在C:/Fresscale/KSDK_1.3.0/tools/eclipse_update/KSDK_1.3.0_Eclipse_Update.zip.
d.Click "Open", and the "OK" button in the Add Repository dialog box.
e.The KSDK update shows up in the list of the original Install dialogs.

4.安裝其他軟體,執行Kinetis Design Studio軟體。
a. Select "Help" -> "Install New Software".

b.在Work With 選擇Freescale KDS Update Site - http://freescale.com/lgfiles/updates/Eclipse/KDS





















c.點選Select All ,按NEXT去完成安裝。



5.Check for Updates.檢查是否有更新軟體。













完成以上軟體的安裝,Kinetis Design Studio動作才會正常。

2014年11月12日 星期三

推薦 ~ 2FreeHosting 免費虛擬主機,20GB空間+150GB流量,cPanel控制版面 。

現在免費虛擬主機可以說是非常的多,但哪個擁有「大空間」、「不亂刪帳號」又「穩定」呢?為了選一個符合以上條件的空間,花了非常多的時間在這上面,試過了許多免費虛擬主機。2FreeHosting是一個還不錯的免費虛擬主機供應商,這家主機商非常適合放網站,架設WordPress等。 2FreeHosting提供了免費20GB的儲存空間、150GB流量/月,以及電子信箱帳號等,儲存空間部分可以不用擔心,流量部分150GB也非常足夠使用了,如果用來架設WordPress是絕對足夠使用的!2FreeHosting也支援自訂網域名稱,當然也有免費的子網域可以使用,主機控制版面是cPanel,非常好使用,當然2FreeHosting也提供了電子信箱服務,可以新增10個電子信箱帳號,信箱空間應該是算在20GB內,如果您想開始經營一個部落格,2FreeHosting會比您自架還來的節省成本、穩定!值得推薦給大家!


2FreeHosing 資訊

網站網址 : http://api.2freehosting.com/
免費空間 : 20GB
流量限制 : 150GB / 月
強制廣告 : 無
控制版面 : cPanel
網站註冊 : http://api.2freehosting.com/

2FreeHosing註冊教學

第一步
連結註冊網頁 : http://api.2freehosting.com/
第一格空白 : 英文名字
第二格空白 : Email信箱
第三格空白 : 設定密碼
第四格空白 : 確認密碼
第五格空白 : 輸入驗證碼
按  Sign Up  開始註冊。
如下圖示

第二步

到Email信箱點擊驗證信中的連接來激活帳號 .
這樣就完成註冊的動作。








2014年11月5日 星期三

在blogger文章上加上Facebook 「讚」(like)與 Google Plus +1 按鈕

目前最流行社交網站就是Facebook 與Google+,許多網站現在都會與這些熱門的社交網站結合,增加網站的流量與知名度。

這篇文章要介紹如何在blogger文章加上Facebook [讚]與Google Plus +1按鈕 , 按步驟去修改,就可以簡單而快速增加此功能。



STEP1:
到Blogger管理介面的[範本],點選右上角的[備份/還原],進入之後點選[下載完整範本],並儲存下載檔案,就完成網站備份的動作。




STEP2:
下載的檔案是個XML檔,使用文字編輯軟體來打開。在檔案中找尋「</head>」,然後在這個 </head> 之前的</b:temolate-skin>之後加入 Google Plus +1 按鈕要使用的的程式碼:
  </b:template-skin>
  <!-- Begin: Add by ethanwu -->
  <!-- Google Plus +1 button -->
  <!-- Place this tag in your head or just before your close body tag. -->
  <script src='https://apis.google.com/js/plusone.js' type='text/javascript'>
    {lang: &quot;zh-TW&quot;}
  </script>
  <!-- End: Add by ethanwu -->
</head>
程式碼中用 <!-- 與 --> 夾起來的部分(紅色)都是註解,而 Begin: Add by ethanwu 與 End: Add by ethanwu 之間程式就是要加進去的。

SETP3: 

接下來就是按鈕的擺放位置,這個範例是把按鈕放在文章標題的下方,首先尋找「<div class='post-header'>」,這個 div 就是專門將小工具放在文章標題下方的用的,但是在管理界面中沒辦法放置自定的按鈕。

一樣加入 Begin: Add by ethanwu 與 End: Add by ethanwu 之間的程式碼。

<div class='post-header'>
  <div class='post-header-line-1'/>
  <!-- Begin: Add by ethanwu -->
  <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
    <div class='socialMediaHeader'>
      <!-- facebook like button -->
      <iframe allowTransparency='true' expr:src='&quot;http://www.facebook.com/plugins/like.php?href=&quot; + data:post.canonicalUrl + &quot;&amp;send=false&amp;layout=button_count&amp;show_faces=false&amp;width=90&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21&quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:90px; height:21px;'/>

      <!-- Google Plus +1 button -->
      <!-- Place this tag where you want the +1 button to render. -->
      <div class='g-plusone' data-size='medium' expr:data-href='data:post.canonicalUrl'/>
    </div>
  </b:if>
  <!-- End: Add by ethanwu -->
</div>
這個程式碼主要包含了 Facebook 與 Google Plus +1 兩部分,上半部的 iframe 部分是 Facebook 所使用的,下半部的 div 則是 Google Plus +1 按鈕,兩個按鈕用<div class='socialMediaHeader'> 包起來,這樣可以方便微調按鈕的位置。

SETP4 :
最後一步驟,到Blogger管理介面的[範本],點選右上角的[備份/還原],把修改之後的檔案上傳回去,就完成了。




2014年3月18日 星期二

Bluetooth Keyboard & Mouse schematic 藍芽3D鍵盤滑鼠電路圖

今天來介紹藍芽Keyboard / Mouse硬體電路,滑鼠功能是由陀螺儀及G-Sensor計算出來數值,藍芽是選用ISSC BM1652模組,是顆HID Bridge 藍芽模組,有包含HID Profile。 

規格

  • Bluetooth V3.0 class2
  • 兩顆3號乾電池
  • 藍芽指示燈
  • 電源指示燈
  • 陀螺儀
  • G-Sensor
  • 具有Keyboard功能
  • 具有Mouse功能


方塊圖

電路圖介紹
*昇壓線路:
使用TI TLV61220 ,INPUT 電池電壓,OUTPUT 3.3V。 

*電池電壓偵測:
讀取電池電壓,經由ADC轉換,讓MCU判斷電池電壓,當電壓低於2.4V時,低電壓LED會亮起。
*單晶片:
是選用LPC1114 ,32KB Flash.50 MHZ ARM Cortex-M0 MCU.



*G-Sensor
是選用ADXL345,G-Sensor主要用意是計算產品傾斜角度。

*陀螺儀:
用來計算滑鼠移動量。
*HID Bluetooth Module
選用ISSC BM1652 HID Bluetooth Module.
*Key Scan
按鍵掃描,來針側按鍵是否有做動。

完整電路圖:下載

2014年2月25日 星期二

無線~鍵盤&滑鼠&搖桿~三合一功能硬體電路介紹_Air Keyboard Hardware Design Specification

無線鍵盤、無線滑鼠的相關產品,在市面上有很多,但把鍵盤滑鼠與遙桿整合在一起,在市面上是很少見到的產品,滑鼠是利用陀螺儀及G-Sensor來實現滑鼠功能,小弟分享之前產品開發經驗,包含硬體設計的電路圖。

規格

頻道範圍: 2400MHz ~ 2483MHz
內鍵 Lithium-ion 可充電電池
操作時間: > 20hr 連續使用
充電時間: 3 小時
支援操作系統:
PC: Windows 98/ME/2000/XP/Vista/windows7;
有效距離: 可達 10 公尺 (2400MHz ~ 2483MHz)



鍵盤滑鼠搖桿-方塊圖












Dongle-方塊圖

鍵盤滑鼠搖桿-電路圖介紹


Battery Charge

電池充電IC是使用BQ24081,R26電阻可以設定充電電流小,電流目前設定為450mA。STAT1與STAT2的變化,可以知道充電IC目前的狀態,當STAT1為Low,STAT2為High是充電模式;當STAT1為High,STAT2為Low是充飽電模式;當STAT1與STAT2都為High是Sleep 模式。


Voltage Regulators
系統電力是經由DC to DC Converter IC TPS62200穩到DC 3.3V,使用DC to DC Converter IC是轉換效率較高,可以較省電;DC 3.3V再經過LDO AIC1731-30G穩到DC 3.0V給Gyro 使用,Gyro電源是需要較乾淨直流電壓,不然容易造成游標漂移。

RF Front-END
RFIC是選用CC2500,發射頻率是2400MHz~2483MHz,控制方式是經由SPI介面到8051 MCU,使用調變方式是 MSK , Data Rate 100KBaud , RX filtter BW 541KHz , Tx Power 0dBm,2.4G天線是使用國巨的YAGEO-CAN43117121X2453K(for 2.4GHz)--PIFA Mode。RF Frequency準確性是由Crystal來決定,是選用+/-10ppm誤差。


Key Scan
按鍵是以矩陣方式來掃描,由PICMCU來執行按鍵掃描。讀到的按鍵資料會存在I2C Buffer,PIC會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C來讀取按鍵資料。


Gyro

Gyro是做成模組化,與Keyboard PCB需垂直固定,控制方式來讀取X/Y/R軸直流電壓,由8051 MCU來讀取,在達配G-sensor資料,軟體經過數學演算成滑鼠資料,再經由RF發射出來給Dongle接收。


G-Sensor

G-Sensor是使用ADXL345BCCZ-RL7,當G-Sensor有角速度資料時,會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C介面來讀取G-Sensor資料,在達配Gyro資料,軟體經過數學演算成滑鼠資料,再經由RF發射出來給Dongle接收。


Game Pad

類比搖桿是讀取X/Y軸直流電壓,由PIC MCU來讀取,再經過ADC轉成資料,存在I2C Buffer,PIC會產生一各中斷訊號給8051 MCU,8051 MCU再經由I2C來讀取按鍵資料。Game Pad加了很多二極體,主要作用是同時按下二各以上按鍵,避免其它沒被按下按鍵產生誤動作。


8051 MCU

8051 MCU是使用C8051F920,主要控制CC2511 RF,Gyro ,G-Sensor ,電源開關機控制,及電池低電壓偵測,與滑鼠左右鍵功能。經由I2C與PIC MCU讀取資料。


PIC MCU
PIC MCU是使用PIC16F1937,主要作按鍵掃描及充電狀態顯示,經由I2C與8051 MCU溝通。


完整電路圖下載:請點這下載檔案