最新情報
ナウいマイコン 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秒毎に数字増えてます!!
加納 大裕(かのう だいゆう)
-
- 2024.11.11
- 11月17日、薪ストーブイベント出展、ふれあいパークほうらい
-
- 2024.11.10
- 薪ストーブ展示場所リニューアル
-
- 2024.10.31
- 11月3日イベント出展、売木村&東栄町
-
- 2024.09.19
- 薪ストーブ、新城軽トラ市「49番ブース」、出店します。
-
- 2024.01.20
- 薪ストーブ出展 新城消防祭