마인드 맵 갤러리 GD32 프로세서 지식 맵
GigaDevice의 혁신적인 프로세서인 GD32 프로세서는 광범위한 애플리케이션 전망과 강력한 개발 지원을 갖춘 고성능, 저전력 소모 32비트 마이크로컨트롤러 시리즈입니다.
2024-11-30 07:30:42에 편집됨Diese Vorlage zeigt die Struktur und Funktion des Fortpflanzungssystems in Form einer Mind Map. Es führt die verschiedenen Komponenten der internen und externen Genitalien ein und sortiert das Wissen eindeutig aus, um Ihnen dabei zu helfen, mit den wichtigsten Wissenspunkten vertraut zu werden.
Dies ist eine Mind Map über die Interpretation und Zusammenfassung des Beziehungsfeldes E-Book, des Hauptinhalts: Überblick über die Essenzinterpretation und Übersicht über das Feld E-Book. "Relationship Field" bezieht sich auf das komplexe zwischenmenschliche Netzwerk, in dem ein Individuum andere durch spezifische Verhaltensweisen und Einstellungen beeinflusst.
Dies ist eine Mind Map über Buchhaltungsbücher und Buchhaltungsunterlagen.
Diese Vorlage zeigt die Struktur und Funktion des Fortpflanzungssystems in Form einer Mind Map. Es führt die verschiedenen Komponenten der internen und externen Genitalien ein und sortiert das Wissen eindeutig aus, um Ihnen dabei zu helfen, mit den wichtigsten Wissenspunkten vertraut zu werden.
Dies ist eine Mind Map über die Interpretation und Zusammenfassung des Beziehungsfeldes E-Book, des Hauptinhalts: Überblick über die Essenzinterpretation und Übersicht über das Feld E-Book. "Relationship Field" bezieht sich auf das komplexe zwischenmenschliche Netzwerk, in dem ein Individuum andere durch spezifische Verhaltensweisen und Einstellungen beeinflusst.
Dies ist eine Mind Map über Buchhaltungsbücher und Buchhaltungsunterlagen.
GD32
GD32F307C
SRAM에서 부팅
Reset_Handler의 주소는 0x200001e1이어야 합니다.
지도 파일 확인
.s 파일의 벡터 테이블 조정
__Vectors_End 앞에 추가
정확한 숫자는 상황에 따라 다릅니다.
대상에서 IROM1 IRAM1 조정
플래시 다운로드 조정
main 함수를 수정하여 시작하세요.
nvic_Vector_table_set(NVIC_VECTTAB_RAM, 0x00)
NVIC 인터럽트 벡터 테이블 기본 주소 구성
STM32
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x00);
참고: STM32에는 매크로 VECT_TAB_SRM 제어 기능이 있습니다.
시스템 초기화();
NVIC 인터럽트
인터럽트 요청(IRQ) 관리를 담당합니다.
인터럽트 우선순위 관리
: NVIC는 최대 256개의 인터럽트 우선순위 레벨을 지원하지만 GD32F307C는 일반적으로 그 중 16개만 사용합니다. 각 인터럽트에는 우선순위 레벨이 할당될 수 있으며, 우선순위 값이 낮을수록 우선순위가 높아집니다.
인터럽트 벡터 테이블
: NVIC는 인터럽트 벡터 테이블을 사용하여 ISR(인터럽트 서비스 루틴)의 주소를 저장합니다. 인터럽트가 발생하면 NVIC는 인터럽트 번호를 기반으로 벡터 테이블에서 해당 ISR 주소를 획득하고 이 주소로 점프하여 ISR을 실행합니다.
중첩 중단
: NVIC는 인터럽트 중첩을 지원합니다. 즉, 우선순위가 높은 인터럽트가 우선순위가 낮은 인터럽트 처리를 중단할 수 있습니다.
인터럽트 활성화 및 비활성화
: NVIC에서는 레지스터를 통해 각 인터럽트의 활성화 및 비활성화 상태를 제어할 수 있습니다.
NVIC 레지스터
ISER(Interrupt Set-Enable Register): 인터럽트를 활성화하는 데 사용됩니다.
ICER(Interrupt Clear-Enable Register): 인터럽트를 비활성화하는 데 사용됩니다.
ISPR(Interrupt Set-Pending Register): 인터럽트를 보류 상태로 설정하는 데 사용됩니다.
ICPR(Interrupt Clear-Pending Register): 인터럽트의 보류 상태를 지우는 데 사용됩니다.
IPR(Interrupt Priority Register): 인터럽트의 우선순위를 설정하는 데 사용됩니다.
SysTick
24비트 다운 카운터
일반적으로 운영 체제의 시계 틱 또는 단순 지연 기능을 구현하는 데 사용됩니다.
특징
자동 다시 로드: SysTick은 카운터가 0으로 감소할 때 사전 설정 값을 자동으로 다시 로드하여 주기적인 인터럽트를 활성화하도록 구성할 수 있습니다.
인터럽트 생성: SysTick 카운터가 0으로 감소하면 SysTick 인터럽트가 트리거될 수 있습니다. 이 인터럽트는 일반적으로 운영 체제의 작업 예약 또는 타임 슬라이스 회전에 사용됩니다.
간단하고 사용하기 쉬움: SysTick은 구성 및 사용이 매우 간단하며 일반적으로 몇 개의 레지스터만 설정하면 됩니다.
등록하다
CTRL(제어 및 상태 레지스터): SysTick의 작업 모드 및 상태를 제어하는 데 사용됩니다.
LOAD(다시 로드 값 레지스터): SysTick 카운터의 다시 로드 값을 설정하는 데 사용됩니다.
VAL(현재 값 레지스터): 현재 SysTick 카운터의 값을 읽는 데 사용됩니다.
CALIB(교정 값 레지스터): 교정 정보를 제공하는 데 사용되며 일반적으로 운영 체제의 클럭 비트에 사용됩니다.
예
문자를 읽기 위한 폴링
직렬 포트
USART
애플리케이션 시나리오
외부 장치와의 클럭 동기화 데이터 전송과 같이 동기 및 비동기 통신이 필요한 상황에 적합합니다.
동기 모드
비동기 모드
UART와 유사함
UART
애플리케이션 시나리오
센서, 디버깅 도구 등과의 통신과 같은 간단한 지점 간 비동기 통신.
비동기 모드
비동기 통신 모드만 지원
M3와 호환 가능
FP가 없는 M4는 M3와 호환되었습니다.
프리RTOS
포트는 CM3 파일을 사용할 수 있습니다
이식 과정
1. 준비하다
FreeRTOS LTS 소스 코드 다운로드
FreeRTOSv202406.01-LTS
케일엔지니어링
2. FreeRTOS 커널 코드 파일을 프로젝트의 해당 디렉터리에 복사합니다.
1. 프로젝트 아래의 디렉터리는 FreeRTOS입니다.
2. 자르기, 파일 보관
kroutine.c
event_groups.c
목록.c
queue.c
stream_buffer.c
작업.c
타이머.c
디렉토리 포함
휴대용 디렉토리
멤망 카탈로그
RVDS 디렉토리
ARM_CM3 디렉토리
3. FreeRTOSConfig.h
수동으로 구성 가능
다른 참조 루틴을 직접 복사할 수도 있습니다.
3. 코드 수정
gd32f30x_it.c
주석 함수 void PendSV_Handler(void)
주석 함수 void SVC_Handler(void)
주석 함수 void SysTick_Handler(void)
FreeRTOS 파일 port.c에서 구현 사용
4. Keil 프로젝트 구성
(1) 대상 옵션
포함 경로
..\FreeRTOS\include
..\FreeRTOS\portable\RVDS\ARM_CM3
(2) 프로젝트 항목 관리
프로젝트 항목
여러 떼
그룹 추가
FreeRTOS_Core
FreeRTOS_포트
5. 프로그램 참조 FreeRTOS API
예
xTimerCreate
xTaskCreate
실제 전투
참조 헤더 파일
#include "FreeRTOS.h"
다른
프로젝트
keil5는 keil4 프로젝트를 엽니다
파일명 uproj -> uprojx 직접 수정
GD32 프로세서 지식 맵
NVIC 인터럽트
인터럽트 요청(IRQ) 관리를 담당합니다.
인터럽트 우선순위 관리
NVIC는 최대 256개의 인터럽트 우선순위 레벨을 지원하지만 GD32F307C는 일반적으로 그 중 16개만 사용합니다. 각 인터럽트에는 우선순위 레벨이 할당될 수 있으며, 우선순위 값이 낮을수록 우선순위가 높아집니다.
인터럽트 벡터 테이블
NVIC는 인터럽트 벡터 테이블을 사용하여 ISR(인터럽트 서비스 루틴)의 주소를 저장합니다. 인터럽트가 발생하면 NVIC는 인터럽트 번호를 기반으로 벡터 테이블에서 해당 ISR 주소를 획득하고 이 주소로 점프하여 ISR을 실행합니다.
중첩 중단
NVIC는 인터럽트 중첩을 지원합니다. 즉, 우선 순위가 높은 인터럽트가 우선 순위가 낮은 인터럽트 처리를 중단할 수 있습니다.
인터럽트 활성화 및 비활성화
NVIC를 사용하면 레지스터를 통해 각 인터럽트의 활성화 및 비활성화 상태를 제어할 수 있습니다.
NVIC 레지스터
ISER(Interrupt Set-Enable Register): 인터럽트를 활성화하는 데 사용됩니다.
ICER(Interrupt Clear-Enable Register): 인터럽트를 비활성화하는 데 사용됩니다.
ISPR(Interrupt Set-Pending Register): 인터럽트를 보류 상태로 설정하는 데 사용됩니다.
ICPR(Interrupt Clear-Pending Register): 인터럽트의 보류 상태를 지우는 데 사용됩니다.
IPR(Interrupt Priority Register): 인터럽트의 우선순위를 설정하는 데 사용됩니다.
SysTick
24비트 다운 카운터
일반적으로 운영 체제의 시계 틱 또는 단순 지연 기능을 구현하는 데 사용됩니다.
특징
자동 다시 로드: SysTick은 카운터가 0으로 감소할 때 사전 설정 값을 자동으로 다시 로드하여 주기적인 인터럽트를 활성화하도록 구성할 수 있습니다.
인터럽트 생성: SysTick 카운터가 0으로 감소하면 SysTick 인터럽트가 트리거될 수 있습니다. 이 인터럽트는 일반적으로 운영 체제의 작업 예약 또는 타임 슬라이스 회전에 사용됩니다.
간단하고 사용하기 쉬움: SysTick은 구성 및 사용이 매우 간단하며 일반적으로 몇 개의 레지스터만 설정하면 됩니다.
등록하다
CTRL(제어 및 상태 레지스터): SysTick의 작업 모드 및 상태를 제어하는 데 사용됩니다.
LOAD(다시 로드 값 레지스터): SysTick 카운터의 다시 로드 값을 설정하는 데 사용됩니다.
VAL(현재 값 레지스터): 현재 SysTick 카운터의 값을 읽는 데 사용됩니다.
CALIB(교정 값 레지스터): 교정 정보를 제공하는 데 사용되며 일반적으로 운영 체제의 클럭 비트에 사용됩니다.
예
직렬 포트
USART
애플리케이션 시나리오
외부 장치와의 클럭 동기화 데이터 전송과 같이 동기 및 비동기 통신이 필요한 상황에 적합합니다.
동기 모드
비동기 모드
UART와 유사함
UART
애플리케이션 시나리오
센서, 디버깅 도구 등과의 통신과 같은 간단한 지점 간 비동기 통신.
비동기 모드
비동기 통신 모드만 지원