最新情報

ナウいマイコン PSoC4200 タイマー割込み SysTick (備忘録)

PSoC4200でタイマー割込み。
コンポーネントでタイマーを使用する方法もあるでしょうが
「ARM Cortex-M0」には、便利なタイマーがあるらしいのでそれを使用します。

1秒毎にタイマー割込みを発生させカウントアップしLCDで確認するだけのプログラム。

/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include "project.h"
#include	<stdio.h>
#include	"I2CLCDDRV.h"

char	lcd_str[32];
#define	SYSTEM_CLK	2400000000			// SYSTEM_CLK	2400000000(24MHz) の時
#define	SYSTEM_CLK_100MS	1000		// 1000 で 100mS 周期割込み


volatile uint32	SysTick_timer;			// Systick timer 用 volatile宣言しておく
#define	SysTick_count	10;				// 1秒枚に割込み
volatile uint32	SysTick_counter = SysTick_count;
char	Uart_data;


CY_ISR(SysTick_Handler)				//割込みをマクロCY_ISRで定義する
{
	if (SysTick_counter == 0){
		SysTick_timer++;			//割込みルーチンは、SysTick_timer をインクリメントするだけ
		SysTick_counter = SysTick_count;
	}
		SysTick_counter --;
}


int main(void)
{
	CyIntSetSysVector(CY_INT_SYSTICK_IRQN,(cyisraddress)SysTick_Handler);	//SysTick割込みベクタに、SysTick_Handlerのアドレスをセット
	SysTick_Config(SYSTEM_CLK / SYSTEM_CLK_100MS);
	
    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    I2CM_Start();		// I2C 開始
	I2C_LCD_Init();		// I2C LCD 初期化
	
	
    for(;;)
    {
        /* Place your application code here. */
		
		I2C_LCD_position(1,1);						// LCD X,Y
		sprintf(lcd_str,"%5ld",SysTick_timer);		// データ数を文字に変換
		I2C_LCD_Char_PrintString("Time = ");		// LCDで確認
		I2C_LCD_Char_PrintString(lcd_str);			// LCDで確認
	}
}

/* [] END OF FILE */

 

ちゃんと、1秒毎に数字増えてます!!

 

加納 大裕(かのう だいゆう)

 

 

最新の投稿記事

加納製作所の商品開発

  • 薪ストーブ
  • メッキアノード
  • 粉体塗料
  • ミニトマト選別機

開発でお悩みの方、

まずは新たな発想を生む
私達の開発環境へお越しください。
知識・経験・ノウハウがそのお悩みを解決します。

開発のご相談