'board_android-IoT/STM32F'에 해당되는 글 31건
- 2025.03.19 :: [Cortex-M3] 타이머(TIMER) 사용하기 , STM32F4 , Timer
- 2025.03.18 :: A7670 , LTE_MODEM , choice guide
- 2025.03.18 :: LTE Cat 1 설명
- 2025.03.07 :: STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법
- 2025.03.06 :: how to create a bin from axf file in Keil/uVision5
- 2025.02.28 :: STM32 printf redirection to UART
[Cortex-M3] 타이머(TIMER) 사용하기
https://embejied.tistory.com/86
[Cortex-M3] 타이머(TIMER) 사용하기
STM32F100RB 칩 안에는 AVR처럼 여러개의 타이머가 있다. 각 타이머는 16bit로 동작하는것 같다. 먼저 타이머의 기능을 살펴보면 여러가지 모드가 있는데 가장 기본적인 Counter Mode(Upcounting & Downcounting)
embejied.tistory.com
'board_android-IoT > STM32F' 카테고리의 다른 글
A7670 , LTE_MODEM , choice guide (0) | 2025.03.18 |
---|---|
LTE Cat 1 설명 (0) | 2025.03.18 |
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법 (0) | 2025.03.07 |
how to create a bin from axf file in Keil/uVision5 (0) | 2025.03.06 |
STM32 printf redirection to UART (0) | 2025.02.28 |
A76XX + ESP32 , example
https://github.com/Xinyuan-LilyGO/LilyGO-T-A76XX
GitHub - Xinyuan-LilyGO/LilyGO-T-A76XX: LilyGo A7670X A7608X SIM7670G series
LilyGo A7670X A7608X SIM7670G series. Contribute to Xinyuan-LilyGO/LilyGO-T-A76XX development by creating an account on GitHub.
github.com
https://www.waveshare.com/wiki/A7670E_Cat-1_HAT
Test with minicom
1. Connect the A7600X Cat-1
Test with minicom
1. Connect the A7600X Cat-1/GSM/GPRS HAT to Jetson Nano.
2. Open a terminal and install the minicom tool.
sudo apt-get install minicom
3. Open a minicom and test with AT commands.
sudo minicom -D /dev/ttyTHS1 -b 115200
To exit the minicom, you can press Ctrl+a and then press X. To configure, you can pres Ctrl+A and then Z.
https://periar.tistory.com/230
라즈베리파이4 모든 UART 활성화하기
라즈베리파이4 모든 UART 활성화하기
라즈베리파이4 에는 모두 6개의 uart 포트가 존재한다. www.raspberrypi.org/documentation/configuration/uart.md UART configuration - Raspberry Pi Documentation documentation > configuration > uart UART configuration There are two types of UA
periar.tistory.com
https://www.waveshare.com/a7670e-cat-1-hat.htm
'board_android-IoT > STM32F' 카테고리의 다른 글
[Cortex-M3] 타이머(TIMER) 사용하기 , STM32F4 , Timer (0) | 2025.03.19 |
---|---|
LTE Cat 1 설명 (0) | 2025.03.18 |
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법 (0) | 2025.03.07 |
how to create a bin from axf file in Keil/uVision5 (0) | 2025.03.06 |
STM32 printf redirection to UART (0) | 2025.02.28 |
LTE Cat 1은 4G LTE 기술의 일종으로, 장치 간 통신을 위한 사물인터넷(IoT) 애플리케이션에 사용됩니다. LTE Cat 1은 2008년에 표준화되었으며, 중간 속도의 LTE 표준으로 분류됩니다.
- 1G Cat 4이라고도 불림
- M2M(Machine-to-Machine) IoT 애플리케이션에 적합
- 보다 다양한 기능을 갖춘 IoT 애플리케이션에 사용
- 고속 데이터 속도를 요구하는 IoT 애플리케이션에 사용
- LTE Cat 1은 Long Term Evolution Category 1의 약자로, 4G LTE 기술의 한 변형입니다
- LTE는 HSDPA에서 한층 업그레이드된 휴대전화 고속 무선 데이터 패킷통신규격입니다
- LTE Cat 1은 3.9세대 무선통신규격인 HSPA+와 함께 사용됩니다
'board_android-IoT > STM32F' 카테고리의 다른 글
[Cortex-M3] 타이머(TIMER) 사용하기 , STM32F4 , Timer (0) | 2025.03.19 |
---|---|
A7670 , LTE_MODEM , choice guide (0) | 2025.03.18 |
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법 (0) | 2025.03.07 |
how to create a bin from axf file in Keil/uVision5 (0) | 2025.03.06 |
STM32 printf redirection to UART (0) | 2025.02.28 |
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법
STM32F437VITx의 TIM2는 32비트 범용 타이머로 동작하며, 기본 클록 소스를 사용하여 0.1ms 간격으로 인터럽트를 발생시키도록 설정할 수 있습니다.
1. CubeMX 설정 방법
CubeMX에서 TIM2를 설정하여 0.1ms(100µs) 간격으로 인터럽트 발생하도록 설정하는 방법입니다.
① TIM2 타이머 설정
- STM32CubeMX에서 TIM2 활성화
- Mode: Internal Clock
- Clock Source: Internal Clock
- Prescaler: SystemCoreClock에 따라 설정
- Counter Mode: Up
- ARR (Auto-reload register): 999 (1ms 기준에서 10배 빠르게)
- Prescaler 설정을 통해 원하는 주기로 맞춤
② 계산: 0.1ms(100µs) 인터럽트 발생
① TIM2 클록 확인
STM32F437VITx에서 APB1 버스는 최대 45MHz(최대 90MHz / 2) 속도로 동작합니다.
- TIM2는 APB1에 연결되어 있으며, 타이머 클록이 x2 배속이므로 TIM2의 기본 클록은 90MHz입니다.
② TIM2 설정값 계산
타이머 인터럽트 주기 공식:
Timer Period=(PSC+1)×(ARR+1)TIM_CLK\text{Timer Period} = \frac{(\text{PSC} + 1) \times (\text{ARR} + 1)}{\text{TIM\_CLK}}
- 0.1ms(100µs) = ((PSC + 1) * (ARR + 1)) / 90MHz
- 적절한 값 선택:
- PSC = 89 (즉, 90MHz / (89+1) = 1MHz)
- ARR = 99 (즉, 1MHz / (99+1) = 10kHz → 100µs)
③ CubeMX에서 NVIC 인터럽트 활성화
- TIM2 global interrupt 활성화
- 코드 자동 생성 후 stm32f4xx_it.c에서 인터럽트 서비스 루틴(ISR) 작성
2. Keil / uVision 코드 작성
CubeMX에서 생성된 코드에서 tim.c 파일과 인터럽트 핸들러에 추가합니다.
① main.c에서 TIM2 시작
#include "tim.h"
HAL_TIM_Base_Start_IT(&htim2);
② stm32f4xx_it.c에서 TIM2 인터럽트 핸들러
void TIM2_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim2);
}
③ tim.c에서 인터럽트 콜백 함수 추가
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM2)
{
// 0.1ms마다 실행할 코드
}
}
3. 직접 레지스터 설정 (Keil/uVision)
CubeMX 없이 Keil/uVision에서 직접 타이머 설정할 수도 있습니다.
① RCC에서 TIM2 클록 활성화
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM2 클록 활성화
② TIM2 설정
TIM2->PSC = 89; // 프리스케일러 (90MHz / (89+1) = 1MHz)
TIM2->ARR = 99; // 자동 재로드 값 (1MHz / 100 = 10kHz = 0.1ms)
TIM2->DIER |= TIM_DIER_UIE; // 업데이트 인터럽트 활성화
TIM2->CR1 |= TIM_CR1_CEN; // 타이머 시작
③ NVIC 설정 (인터럽트 활성화)
NVIC_EnableIRQ(TIM2_IRQn);
NVIC_SetPriority(TIM2_IRQn, 1);
④ 인터럽트 핸들러 구현
void TIM2_IRQHandler(void)
{
if (TIM2->SR & TIM_SR_UIF) // 업데이트 인터럽트 플래그 확인
{
TIM2->SR &= ~TIM_SR_UIF; // 플래그 클리어
// 0.1ms마다 실행할 코드
}
}
4. 요약
- CubeMX 사용 시
- TIM2를 Internal Clock으로 설정
- PSC = 89, ARR = 99 설정 (100µs 인터럽트 발생)
- NVIC 인터럽트 활성화 후 HAL_TIM_PeriodElapsedCallback에서 코드 작성
- Keil/uVision 직접 설정
- RCC->APB1ENR에서 TIM2 클록 활성화
- PSC = 89, ARR = 99으로 설정
- TIM2->DIER |= TIM_DIER_UIE;로 인터럽트 활성화
- TIM2_IRQHandler()에서 인터럽트 처리
이제 TIM2가 0.1ms(100µs) 간격으로 정상 동작할 것입니다. 🚀
'board_android-IoT > STM32F' 카테고리의 다른 글
A7670 , LTE_MODEM , choice guide (0) | 2025.03.18 |
---|---|
LTE Cat 1 설명 (0) | 2025.03.18 |
how to create a bin from axf file in Keil/uVision5 (0) | 2025.03.06 |
STM32 printf redirection to UART (0) | 2025.02.28 |
How to change the readout protection on STM32F4 (0) | 2025.02.20 |
Run #1: 입력내용
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin STM32F407VET6_437VIT6\STM32F407VET6_437VIT6.axf --output=STM32F407VET6_437VIT6\STM32F407VET6_437VIT6.bin
프로젝트명\MDK-ARM\타겟폴더명:
> STM32F407VET6_437VIT6\MDK-ARM\STM32F407VET6_437VIT6
'board_android-IoT > STM32F' 카테고리의 다른 글
LTE Cat 1 설명 (0) | 2025.03.18 |
---|---|
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법 (0) | 2025.03.07 |
STM32 printf redirection to UART (0) | 2025.02.28 |
How to change the readout protection on STM32F4 (0) | 2025.02.20 |
Keil compiler printf(with uart) 하기 (0) | 2025.02.20 |
//#ifdef __GNUC__
//#warning "__GNUC__ is defined ---------"
// // With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar()
// #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
//#else
//#warning "__GNUC__ is -------------- not !!!! defined --- keil "
// #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
//#endif /* __GNUC__ */
//
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) // for keil
/**
* @brief Retargets the C library printf function to the USART.
* @param None
* @retval None
*/
PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
//int _write(int file, char *ptr, int len) {
// HAL_UART_Transmit(&huart2, (uint8_t *)ptr, len, HAL_MAX_DELAY);
// return len;
//}
/*
// UART2 리다이렉트 (printf 사용 가능)
int _write(int file, char *ptr, int len) {
HAL_UART_Transmit(&huart2, (uint8_t*) ptr, len, HAL_MAX_DELAY);
return len;
}
*/
'board_android-IoT > STM32F' 카테고리의 다른 글
STM32F437VITx에서 TIM2를 0.1ms(100µs) 간격으로 인터럽트 발생시키는 설정 방법 (0) | 2025.03.07 |
---|---|
how to create a bin from axf file in Keil/uVision5 (0) | 2025.03.06 |
How to change the readout protection on STM32F4 (0) | 2025.02.20 |
Keil compiler printf(with uart) 하기 (0) | 2025.02.20 |
Keil compiler printf(with uart) 하기 (0) | 2025.02.18 |