반응형

인터넷에 떠도는 C# 메모장 프로그램이다...

 

생각보다 간단하네...?

 

MemoEx.zip
0.78MB

 

반응형

'Study > C#' 카테고리의 다른 글

C# - 활쏘기 게임  (0) 2018.08.31
C# - 닷지 게임 만들기 결과  (2) 2018.08.31
C# - 닷지 게임 만들기  (0) 2018.08.30
C# - 비행기 자유롭게 움직이기  (0) 2018.08.30
C# - 공튀기기 (particles.js)  (0) 2018.08.30
반응형

자유공모

과제목표

  • 자유로운 주제의 임베디드SW개발
  • 참신하고 기발한 아이디어 구현

일반사항

  • 자유로운 주제의 창의적인 임베디드SW 및 시스템 개발
  • 국내·외 대학생, 대학원생 및 일반인 (초·중·고등학생, 직장인도 참여 가능)

제출서류

제출 서류제출 양식참가신청서개발완료보고서개발요약서소스코드시연 동영상

PDF
PDF
PDF
TXT
http://youtube.com에 업로드 후 URL 업로드

※ 파일 업로드 시 파일명은 반드시 Q&A 또는 공지사항을 확인 후 수정하여 업로드 바랍니다.

일정안내

참가 신청 및 개발완료 보고서 제출결선

2018년 04월 30일 ~ 2018년 10월 01일
2018년 12월 05일(수) ~ 06일(목)
반응형

'기타 참고자료' 카테고리의 다른 글

웨비나 무료강의  (0) 2021.01.25
[참고 자료] 부동소수점  (0) 2021.01.25
제한없는 pdf 출력  (0) 2021.01.25
MCU 미사용 핀 처리  (0) 2021.01.25
참고 자료 Link  (0) 2020.02.03
반응형

Nucleo-103RB 보드를 이용하여 USART to Ethernet Message를 전송하기 위해 

 

Nucleo B'd CUBE 설정 

 

 

PA0 : WIZ107SR의 RESET 

PA1 : WIZ107SR의 HW Trigger

 

Default High로 설정하였다.

 

허나,

Nucleo B'd의 TX, RX 포트에는 ST link가 내장이며,

MCU 코드는 Loop Back 소스가 들어가 있다.

 

TX/RX에 연결하여 Message를 전송하였으나,

 

PC에서 시리얼 연결 후 전송 Message  : a

아스키 코드 a를 전송하였으나 O으로 수신된다... 추가 분석이 필요하다.

 

 

반응형

'Project > WIZ107SR-EVB' 카테고리의 다른 글

WIZ107SR-EVB UART to Ethernet  (0) 2019.12.08
반응형

1. ST 관련 자료

https://www.plainy.co.kr/

 

plainy

plainy

www.plainy.co.kr

2. WinForm에서 소켓을 사용한 1:1채팅(쓰레드 사용)

http://blog.naver.com/PostView.nhn?blogId=aaaaa0940&logNo=80154520356

 

WinForm에서 소켓을 사용한 1:1채팅(쓰레드 사용)

using System.Net;using System.Net.Sockets;using System.Threading;namespace WindowsServer{ pu...

blog.naver.com

3. TCP C#관련 자료

http://www.csharpstudy.com/net/article/5-TCP-%EC%84%9C%EB%B2%84

 

TCP 서버 - C# 프로그래밍 배우기 (Learn C# Programming)

TCP 서버 TcpListener 클래스 .NET Framework에서 TCP 서버 프로그램을 개발하기 위해서는 System.Net.Sockets.TcpListener 클래스를 사용한다. TcpListener 클래스는 내부적으로 System.Net.Sockets.Socket 클래스 기능들을 사용하여 TCP Port Listening 기능을 구현하고 있다. TCP 서버는 TcpListener 클래스를 통해 포트를 열고 TcpListener.AcceptTcp

www.csharpstudy.com

 

반응형

'기타 참고자료' 카테고리의 다른 글

웨비나 무료강의  (0) 2021.01.25
[참고 자료] 부동소수점  (0) 2021.01.25
제한없는 pdf 출력  (0) 2021.01.25
MCU 미사용 핀 처리  (0) 2021.01.25
임베디드 소프트웨어 경진대회  (0) 2021.01.20
반응형

Uart to Ethernet으로 변환해주는 보드 이다.

 

Defualt 설정으로

 

Ethernet B'd는 Server로 설정이 되어있고, 보드의 IP는 192.168.11.2

 

PC 설정은 192.168.11.1로 설정을 해주어야 Ping Test가 가능하다.

 

또한 TCP 프로그램에서 Test시에 연결 Port는 기본으로 5000으로 설정이 되어있다

 

Command mode에서 명령을 전송하여 확인이 가능하다.

 

해당 명령어 List이다. 사용하면서 차차 써보기로 하자.

 

 

제공해주는 Hercules Tool을 이용하여 Connection을 하였고,

 

Test를 해보았다.

 

연결이 완료된 상태이다.

 

Serial에서 전송/ TCP에서 전송 하여

 

송수신 Test를 완료 하였다.

 

소켓은 자동으로 Open이 되며, Trigger모드를 Off하여 Command Mode를 Off하고 진행하면 된다.

 

이로써 Uart to Ethernet 모듈을 써서 TCP 구현이 가능하다.

 

추가 목표

 

1. 소켓을 여러개 Open이 가능한지?

 

2. Trigger Mode(Command Mode)를 Serial로 전송하여 제어가 가능한지는 더 확인이 필요하다.

 

3. UDP로도 통신 구현

 

4. Server / Client를 바꿔 구현

 

 

반응형

'Project > WIZ107SR-EVB' 카테고리의 다른 글

WIZ107SR-EVB MCU로 Message전송하기  (0) 2021.01.20
반응형

1. CUBE MX 설정

 

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * 

© Copyright (c) 2019 STMicroelectronics.
  * All rights reserved.


  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef huart2;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int fputc(int ch, FILE *f) 

uint8_t temp[1] = {ch} ; 

HAL_UART_Transmit(&huart2, temp, 1, 50) ; 

return(ch) ; 

/*

내부 정의된 함수들로 Printf를 사용할 수 있게 해준다.

*/
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */

HAL_StatusTypeDef RcvStat ;  //rcvStat 상태 변수 선언
uint8_t bufftx[10] = "Hello!\n" ;  //bufftx배열에 문자열 삽입
uint8_t UsartData[10] ;  //UsartData 배열 선언

//HAL_UART_Transmit(&huart2, bufftx, 10, 100);  // send start data 

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

/*
// 1. continue TX Data
HAL_UART_Transmit(&huart2, bufftx, 10, 100) ;  // send start data 
*/ //송신 

/*
// 2. loopback TX Data
RcvStat = HAL_UART_Receive(&huart2, UsartData, 1, 100) ;  // receive data 

if (RcvStat == HAL_OK) {  // receive check 
HAL_UART_Transmit(&huart2, UsartData, 1, 100) ;  // send received data 
}  //Receive loopback code
*/

/*
// 3. printf TX Data, need function call
printf("Hello\n") ; 
HAL_Delay(500) ; 
*/  // printf 함수 사용 0.5초마다 송신

  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Initializes the CPU, AHB and APB busses clocks 
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB busses clocks 
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief USART2 Initialization Function
  * @param None
  * @retval None
  */
static void MX_USART2_UART_Init(void)
{

  /* USER CODE BEGIN USART2_Init 0 */

  /* USER CODE END USART2_Init 0 */

  /* USER CODE BEGIN USART2_Init 1 */

  /* USER CODE END USART2_Init 1 */
  huart2.Instance = USART2;
  huart2.Init.BaudRate = 115200;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART2_Init 2 */

  /* USER CODE END USART2_Init 2 */

}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);

  /*Configure GPIO pin : PC13 */
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /*Configure GPIO pin : PA6 */
  GPIO_InitStruct.Pin = GPIO_PIN_6;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */

  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)

  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

 

 

다음은 링버퍼를 구현해보도록 하겠습니다.

반응형

'Project > Nucleo-F103RB' 카테고리의 다른 글

Nucleo-F103RB Serial통신 RingBuff  (0) 2023.04.13
Nucleo 103rb i2c Char LCD  (0) 2021.05.25
Nucleo-F103RB Serial 통신2  (0) 2019.05.21
Nucleo-F103RB 시리얼통신 입력으로 제어  (0) 2019.05.21
Nucleo-F103RB Serial 통신1  (0) 2019.05.21
반응형

ST보드를 제대로 Study를 진행하려 보드를 구매하였다.

 

모델은 STM32F746G-DISCO 보드이다.

 

Mouser에서 얼마였더라? 무튼 구매를 하였다.

 

A타입 케이블은 따로 구매를.....

 

USB허브를 통해 전원만 인가를 하였더니 기본 펌웨어 load가 되지 않았고,

 

PC를 연결하였더니 기본 펌웨어가 load되면서 화면이 출력 된다.

 

이제 차근차근 하나씩 해보자

 

1. LED

2. SWITCH

3. UART

4. Ext.Int

5. Timer

6. I2C

7. ETHERNET

8. SPI

9. SD Card

10. TFT

11. PWM

등등... 

 

반응형
반응형

1. CUBE MX SET

2. Sorce Code

 

int fputc(int ch, FILE *f)
{
uint8_t temp[1] = {ch} ;

HAL_UART_Transmit(&huart2, temp, 1, 50) ;

return(ch) ;
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
printf("Hello\n") ;
HAL_Delay(500) ;
  }
  /* USER CODE END 3 */
}

 

0.5s마다 전송한다.

반응형

'Project > Nucleo-F103RB' 카테고리의 다른 글

Nucleo 103rb i2c Char LCD  (0) 2021.05.25
Nucleo-F103RB Serial 통신3  (0) 2019.05.27
Nucleo-F103RB 시리얼통신 입력으로 제어  (0) 2019.05.21
Nucleo-F103RB Serial 통신1  (0) 2019.05.21
Nucleo-F103RB LED 켜기  (0) 2019.05.21
반응형

스위치를 이용한 입력으로 시리얼 전송

시리얼 문자를 이용한 LED OnOFF

 

1. CUBE MX SET

 

2. Sorce Code

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
HAL_StatusTypeDef RcvStat ;
uint8_t bufftx[10] = "Hello!\n" ;
uint8_t b_in[10] = "b_in\n" ;
uint8_t UsartData[10] ;
uint8_t pin_state ;

HAL_UART_Transmit(&huart2, bufftx, 10, 100) ;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
RcvStat = HAL_UART_Receive(&huart2, UsartData, 1, 100) ;

if (RcvStat == HAL_OK) {
if (UsartData[0] == 'a') {  // if serial input is 'a', led on
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET) ;
} else if (UsartData[0] == 'b') {  // if serial input is 'a', led off
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET) ;
}

HAL_UART_Transmit(&huart2, UsartData, 1, 100) ;
}

pin_state = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) ;

if (!pin_state) {  // if b1 is low, send b_in
HAL_UART_Transmit(&huart2, b_in, 10, 100) ;
}
  }
  /* USER CODE END 3 */
}

 

SWITCH를 누르면 B_IN MSG 송신

시리얼문자 'a' 전송시 LED ON

'b'전송시 LED OFF

반응형

'Project > Nucleo-F103RB' 카테고리의 다른 글

Nucleo-F103RB Serial 통신3  (0) 2019.05.27
Nucleo-F103RB Serial 통신2  (0) 2019.05.21
Nucleo-F103RB Serial 통신1  (0) 2019.05.21
Nucleo-F103RB LED 켜기  (0) 2019.05.21
Nucleo-F103RB 개발환경  (0) 2019.05.21
반응형

1. CUBE MX SET

 

2. GENERATE CODE

 

3. Sorce Code

 

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
HAL_StatusTypeDef RcvStat ;
uint8_t bufftx[10] = "Hello!\n" ;
uint8_t UsartData[10] ;

HAL_UART_Transmit(&huart2, bufftx, 10, 100) ;  // send start data
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
RcvStat = HAL_UART_Receive(&huart2, UsartData, 1, 100) ;  // receive data

if (RcvStat == HAL_OK) {  // receive check
HAL_UART_Transmit(&huart2, UsartData, 1, 100) ;  // send received data
}
  }
  /* USER CODE END 3 */
}

 

코드는 좀더 들여다 봐야 할 것 같다....

 

Interrupt Enable은 왜 했는지?

Serial 확인시 1번만 수신되고, Loopback 기능인 것 같다.

 

 

반응형

'Project > Nucleo-F103RB' 카테고리의 다른 글

Nucleo-F103RB Serial 통신3  (0) 2019.05.27
Nucleo-F103RB Serial 통신2  (0) 2019.05.21
Nucleo-F103RB 시리얼통신 입력으로 제어  (0) 2019.05.21
Nucleo-F103RB LED 켜기  (0) 2019.05.21
Nucleo-F103RB 개발환경  (0) 2019.05.21

+ Recent posts