G2007_プロジェクトの複写
2024年12月2日
19:13
G2007_lpc_new_project_copy
LPCXpresso を起動します
プロジェクトを空欄にします
LPC812_TEMPLATE を読み込みします
プロジェクト、プロパティの一部を修正します
リファレンスポリシーが、古いプロジェクトのままなので削除します
新しいリファレンスポリシーを追加します
ビルドのプロパティを展開します
MCU Linker も古い名前のままなので修正が必要です
ビルドの作業ファイルを削除します
これらは前回のプロジェクトの生成ファイルです
すべて削除します
メインコードの修正をします
///////////////////////////////////////////////////////
// LPC812 TEMPLATE プロジェクトのひな型
// 2024.12.02 MON (19:15) goma0099 -37891551-
//
///////////////////////////////////////////////////////
#include "LPC8xx.h" //ヘッダファイルの読み込み
#include "\LPC\LPC812\KYO\type.h"
#include <stdlib.h> // atoi()活用のため
#include <string.h> // atoi()活用のため
#include "\LPC\LPC812\KYO\lpc8xx_uart.h"
#include "\LPC\LPC812\KYO\lpc8xx_uart.c"
#include "\LPC\LPC812\KYO\lpc8xx_i2c.h"
#include "\LPC\LPC812\KYO\lpc8xx_i2c.c"
// 改造された共用関数を一箇所にまとめて最新がインクルードされるように
#include "\LPC\LPC812\KYO\lpc812_kyo.h"
#include "\LPC\lpc_kyo.h"
void SwitchMatrix_Init()
{
/* Enable SWM clock */
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7);
/* Pin Assign 8 bit Configuration */
/* U0_TXD */
/* U0_RXD */
LPC_SWM->PINASSIGN0 = 0xffff0004UL;
/* I2C0_SDA */
LPC_SWM->PINASSIGN7 = 0x11ffffffUL;
/* I2C0_SCL */
LPC_SWM->PINASSIGN8 = 0xffffff0dUL;
/* Pin Assign 1 bit Configuration */
/* RESET */
LPC_SWM->PINENABLE0 = 0xffffffbfUL;
}
// インターバル割り込み関数を msec 待ち時間関数に活用しています
void SysTick_Handler(void)
{
if(--Goma_msec_wait_cnt == 0)
{ NVIC_DisableIRQ(SysTick_IRQn); // 割り込み無効
}
}
// 関数テストの処理をここから下に
// C#と違い、main() で利用する関数は事前に定義されている必要があります
// あるいは、型定義を行えば、main() の下に関数定義をしても利用出来ます
int main(void)
{
// シリアル通信の受信データ
uint8_t rcv_buf_max = 40;
char rcv_buf[40+2];
uint8_t rcv_cnt = 0;
uint8_t led_pin = 20; // 20番ピンをLEDモニタとします
// スイッチ・マトリックス設定
SwitchMatrix_Init();
pin_set_output(led_pin); // LED
//////////////////////////////////////
// 周期割り込みの初期化
//////////////////////////////////////
SystemCoreClockUpdate();
SysTick_Config( SYSTICK_DELAY );
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);
UARTInit(LPC_USART0,115200); // UART初期化関数( bpsに設定)
LPC_i2c_init(); // I2C初期化
while(1)
{
// 点滅 600msecで点滅します
pin_out(led_pin,1,'m',300); // 300msec LED ON
pin_out(led_pin,0,'m',300); // 300msec LED OFF
// コマンド受信 CR LF を検出し、コマンドが完成する
if(UART_rcv_buf_get(rcv_buf,&rcv_cnt,rcv_buf_max) == 0) continue;
// 受信をLEDで確認する
pin_out(led_pin,0,'m',300); pin_out(led_pin,1,'m',0);
if(rcv_buf[0] == 'S' || rcv_buf[0] =='s') // 反応するI2Cアドレス調査
{
LPC_i2c_add_all_chk(); // アドレス検索
}
if(rcv_buf[0] == 'a' || rcv_buf[0] == 'A')
{
}
if(rcv_buf[0] == 'b' || rcv_buf[0] == 'B')
{
}
if(rcv_buf[0] == 'c' || rcv_buf[0] == 'C')
{
}
if(rcv_buf[0] == 'f' ||rcv_buf[0] == 'F')
{
}
if(rcv_buf[0] == 'P' || rcv_buf[0] == 'p')
{
}
if(rcv_buf[0] == 'z' || rcv_buf[0] == 'Z')
{
}
UART_rcv_buf_clr(rcv_buf,&rcv_cnt); // 受信コマンド初期化
}
}
20番ピンのLEDを点滅させる
下記が、マイコンに書き込みする目的のファイルです
次回の説明の為に、プロジェクトフォルダをZIPファイルに圧縮して、OneDriveに公開します