void LED_Write(uint8 value)
{
uint8 staticBits = (LED_DR & (uint8)(~LED_MASK));
LED_DR = staticBits | ((uint8)(value << LED_SHIFT) & LED_MASK);
}
uint8 LED_Read(void)
{
return (LED_PS & LED_MASK) >> LED_SHIFT;
}
#include <project.h>
int main()
{
for(;;)
{
LED_Write(0);
CyDelay(100);
LED_Write(1);
CyDelay(100);
}
}
#include <project.h>
volatile uint32 gTick = 0; ;gTickは割込みで変動するので、volatile宣言しておく
CY_ISR(SysTick_Handler) ;割込みをマクロCY_ISRで定義する
{
gTick++; ;割込みルーチンは、gTickをインクリメントするだけ
}
void Delay(uint32 tick_delay) ;Delayルーチン
{
uint32 tick_entry = gTick;
while((gTick-tick_entry) < tick_delay); ;gTickの値が、tick_delayだけ増加するまで待つ
}
int main()
{
CyIntSetSysVector(15,(cyisraddress)SysTick_Handler); ;SysTick割込みベクタに、SysTick_Handlerのアドレスをセット
SysTick_Config(BCLK__BUS_CLK__HZ/1000); ;SysTick割込みの周期を1msに設定する
CyGlobalIntEnable; ;マクロCyGlobalIntEnableで、割込みを許可する
for(;;)
{
LED_Write(~LED_Read()); ;LEDを点滅させる
Delay(500); ;500msのディレイ
}
}
#include <project.h>
int main()
{
for(;;) {}
}
M0025:Clock Error: (Source clock is not enabled).
FreeRTOS.h
FreeRTOSConfig.h
StackMacros.h
croutine.c
croutine.h
device.h
heap_2.c
list.c
list.h
mpu_wrappers.h
port.c
portable.h
portmacro.h
print.lis
projdefs.h
queue.c
queue.h
semphr.h
task.h
tasks.c
timers.c
timers.h
#inclued <project.h>
pointer targets in passing argument 2 of 'xTaskGenericCreate' differ in signedness [-Wpointer-sign]
#include <project.h>
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#define TASK_STACK_LED 128 //タスクに割り当てる領域サイズ
#define TASK_PRIORITY_LED (tskIDLE_PRIORITY+1) //タスクのプライオリティ
void Task_LED (void *pvParameters); //関数のプロトタイプ
void prvHardwareSetup(void);
void vApplicationStackOverflowHook( //RTOSのエラー処理用
xTaskHandle pxTask,
signed char *pcTaskName)
{
taskDISABLE_INTERRUPTS();
for(;;);
}
void vApplicationMallocFailedHook(void) //同上
{
taskDISABLE_INTERRUPTS();
for(;;);
}
void prvHardwareSetup(void) //RTOS初期化
{
extern void xPortPendSVHandler(void);
extern void xPortSysTickHandler(void);
extern void vPortSVCHandler(void);
extern cyisraddress CyRamVectors[];
CyRamVectors[11]
= (cyisraddress) vPortSVCHandler;
CyRamVectors[14]
= (cyisraddress) xPortPendSVHandler;
CyRamVectors[15]
= (cyisraddress) xPortSysTickHandler;
}
int main()
{
prvHardwareSetup();
CYGlobalIntEnable;
xTaskCreate(Task_LED, \ //タスクの登録
(signed portCHAR *)"LED", \
TASK_STACK_LED, \
NULL, \
TASK_PRIORITY_LED, \
NULL);
vTaskStartScheduler(); //RTOSカーネル起動
while(1); //無限ループ
}
void Task_LED(void *pvParameters) //タスクルーチン
{
const portTickType xDelay
= 200 / portTICK_RATE_MS;
while(1)
{
LED_Write(~LED_Read()); //LED点滅
vTaskDelay(xDelay); //RTOSのディレイルーチン
}
}
#include <project.h>
uint8 Count;
uint8 Buffer[128];
void ToUpper(uint8 *s) {
while ( *s ) {
*s = toupper((unsigned char)*s); //小文字→大文字変換
s++;
}
}
int main()
{
/* Initialization Code: */
CYGlobalIntEnable;
USBUART_1_Start(0, USBUART_1_3V_OPERATION); //USBUARTをスタート
while(!USBUART_1_bGetConfiguration()); //ホストとの接続待ち
USBUART_1_CDC_Init(); //CDCの初期化
/* Main Loop: */
for(;;) {
Count = USBUART_1_GetCount(); //受信文字数
if(Count != 0) {
USBUART_1_GetAll(Buffer); //受信データをバッファに入れる
ToUpper(Buffer); //大文字に変換
USBUART_1_PutData(Buffer, Count); //データを送信する
while(!USBUART_1_DataIsReady()){} //送信完了待ち
}
}
}
com.c
com.h
fixedpoint.c
fixedpoint.h
utility.c
utility.h
#include <project.h>
#include <math.h>
#include "com.h"
#include "utility.h"
uint8 i;
uint8 ch;
uint8 str[16];
uint8 *pstr;
int32 tcyc;
int main()
{
CYGlobalIntEnable;
Init_COM(); //USBUARTの初期化、ホスト側と接続したらCDC初期化、出来なければUSBUART停止
COM_Wait_PC_Term(); //ホスト側端末の起動待ち、ホスト側からのキー入力を待つ
for(;;) {
COM_printf(">Tcyc? "); //1周期のサイクル数を入力
for (i=0; i<16-1 ;i++) {
while(!USBUART_1_DataIsReady()){}
USBUART_1_GetData(&ch,1);
USBUART_1_PutData(&ch,1);
if (ch=='\r') break;
str[i] = ch;
}
str[i] = '\0';
pstr = str;
if (xatoi(&pstr, &tcyc) && (tcyc>0)) { //入力を数値化して
double fTH,fSIN;
int32 iTH,iSIN;
COM_printf("\n\rTcyc = %d\n\r",tcyc);
for (iTH=0; iTH<=tcyc; iTH++) { //グラフを表示
fTH = ((double)iTH)/((double)tcyc)*2*M_PI;
fSIN = sin(fTH);
iSIN = (int32)((fSIN+1.0)*20);
COM_printf("%3d ",iSIN);
for (i=0; i<iSIN; i++) COM_printf(" ");
COM_printf("*\n\r");
}
COM_printf("\n\r");
}
}
}