سلام
من کار با open cpu ماژول mc60 شروع کردم
مثال های خود sdk رو دارم تست میکنم
توی مثال EXAMPLE_GPIO وقتی دارم پایه رو عوض میکنم تا به جای PINNAME_NETLIGHT مثلا پایه PINNAME_GPIO2 به عنوان خروجی تعریف بشه و led متصل به این پایه روشن خاموش بشه هیچ اتفاقی نمی افته انگار اصلا کدی نوشته نشده
داکیومنت ها رو میخوندم این پایه قابلیت خروجی شدن داره و توی شماتیک برد راه انداز هم به led وصله چرا led روشن خاموش نمیشه موندم
یه سوال دیگه هم داشت وقتی از open cpu استفاده میکنیم میتونیم توی while کد هایی مثل کد هایی که برای واحد های مختلف میکروکنترلر های دیگه مینوشتیم بنویسیم منظور اینه open cpu محدودیتی داره یا نه؟
دوست عزیز چندین پست در مورد تست پله پله در سایت هست
بعد از کامپیال نیاز هست یک برنامه ران بشه تا کد نهایی ایجاد بشه ایا همه این مراحل را انجام میدید؟
ایا اموزشها را خوندید کامل؟
بله آموزش های داخل سایت رو خوندم و تست کردم کار میکنن
من مشکلم الان این هست کد بلینکر برای io های ماژول مینویسم کار نمیکنه
#include "ql_trace.h"
#include "ql_system.h"
#include "ql_gpio.h"
#include "ql_stdlib.h"
#include "ql_error.h"
#include "ql_uart.h"
#define DEBUG_ENABLE 1
#if DEBUG_ENABLE > 0
#define DEBUG_PORT UART_PORT1
#define DBG_BUF_LEN 512
static char DBG_BUFFER[DBG_BUF_LEN];
#define APP_DEBUG(FORMAT,...) {\
Ql_memset(DBG_BUFFER, 0, DBG_BUF_LEN);\
Ql_sprintf(DBG_BUFFER,FORMAT,##__VA_ARGS__); \
if (UART_PORT2 == (DEBUG_PORT)) \
{\
Ql_Debug_Trace(DBG_BUFFER);\
} else {\
Ql_UART_Write((Enum_SerialPort)(DEBUG_PORT), (u8*)(DBG_BUFFER), Ql_strlen((const char *)(DBG_BUFFER)));\
}\
}
#else
#define APP_DEBUG(FORMAT,...)
#endif
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara)
{
}
static void GPIO_Program(void)
{
// Specify a GPIO pin
Enum_PinName gpioPin = PINNAME_GPIO2;
// Define the initial level for GPIO pin
Enum_PinLevel gpioLvl = PINLEVEL_HIGH;
// Initialize the GPIO pin (output high level, pull up)
Ql_GPIO_Init(gpioPin, PINDIRECTION_OUT, gpioLvl, PINPULLSEL_PULLUP);
APP_DEBUG("<-- Initialize GPIO pin (PINNAME_STATUS): output, high level, pull up -->\r\n");
// Get the direction of GPIO
APP_DEBUG("<-- Get the GPIO direction: %d -->\r\n", Ql_GPIO_GetDirection(gpioPin));
// Get the level value of GPIO
APP_DEBUG("<-- Get the GPIO level value: %d -->\r\n\r\n", Ql_GPIO_GetLevel(gpioPin));
// Set the GPIO level to low after 500ms.
APP_DEBUG("<-- Set the GPIO level to low after 500ms -->\r\n");
Ql_Sleep(500);
Ql_GPIO_SetLevel(gpioPin, PINLEVEL_LOW);
APP_DEBUG("<-- Get the GPIO level value: %d -->\r\n\r\n", Ql_GPIO_GetLevel(gpioPin));
// Set the GPIO level to high after 500ms.
APP_DEBUG("<-- Set the GPIO level to high after 500ms -->\r\n");
Ql_Sleep(500);
Ql_GPIO_SetLevel(gpioPin, PINLEVEL_HIGH);
APP_DEBUG("<-- Get the GPIO level value: %d -->\r\n", Ql_GPIO_GetLevel(gpioPin));
}
/************************************************************************/
/* The entrance for this example application */
/************************************************************************/
void proc_main_task(s32 taskId)
{
s32 ret;
ST_MSG msg;
// Register & open UART port
ret = Ql_UART_Register(UART_PORT1, CallBack_UART_Hdlr, NULL);
if (ret < QL_RET_OK)
{
Ql_Debug_Trace("Fail to register serial port[%d], ret=%d\r\n", UART_PORT1, ret);
}
ret = Ql_UART_Open(UART_PORT1, 115200, FC_NONE);
if (ret < QL_RET_OK)
{
Ql_Debug_Trace("Fail to open serial port[%d], ret=%d\r\n", UART_PORT1, ret);
}
APP_DEBUG("\r\n<-- OpenCPU: GPIO Example -->\r\n");
// Start to program GPIO pin
GPIO_Program();
// Start message loop of this task
while (TRUE)
{
Ql_OS_GetMessage(&msg);
switch(msg.message)
{
case MSG_ID_USER_START:
break;
default:
break;
}
}
}
سلام. پیشنهاد میکنم این مطلب رو با دقت از ابتدا تا انتها بخونید و مرحله مرحله باهاش پیش برید
بعد از این که تونستید روی پین نت لایت چشمک زن رو راه اندازی کنید پین رو تغییر بدید.
در مورد قسمت دوم سوالتون:
شما میکروکنترلر رو به طور کامل در اختیار ندارید و کد شما فقط بخشی از پردازش کل ماژول هست. به همین دلیل باید از توابعی که داخل sdk ارائه شده استفاده کنید.