BASIC4MCU | 질문게시판 | MTP 주소 지정 방법
페이지 정보
작성자 adoui 작성일2023-12-19 17:42 조회716회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23603
본문
안녕하세요.
MCU 초보입니다.
MCU 데이터시트에 보니 MTP 주소를 0x1234 ~ 0x4000까지 쓸 수 있다고 나와있습니다.
제가 하고싶은 구현은 이 주소에 모터 RPM값을 저장하여 그 저장한 값을 같은 프로젝트 안에 있는 코드에서 사용하고 싶습니다.
아래는 데이터 시트에 나와있는 예시코드입니다.
1. The starting address in the programming procedure assigns at 0x4000. 2. Using __u8WritePara to program the desired data into user-MTP. 3. The library performs the programming procedure. After the programming is complete, the programming times will increase automatically. 4. The programming address will not change when programming is less than 1000 times. Once the programming reaches 1000 times, the programming address will increase a word-space automatically. 5. If the programmed data matches the existing data in the user-MTP, the library will not execute the programming procedure. This mechanism reduces unnecessary programming and only programs when data are different. 6. In this example, the array assigns 4-space, and the programming can up to 4000 times. // assign 4-space to programming data const U32 _u32Data[4] __attribute__((section(".ARM.__at_0x00004000"))) __attribute__((used)) = {0}; // assign a structure for programming procedure volatile User_Parameter_Type _stPara; // return value from programming procedure U8 u8WriteStatus; // 16-bit variable for read U16 u16ReadData; int main(void) { // define MTP address _stPara.u32StartAddress = (U32)&_u32Data; // byte length changes to word length _stPara.u32WordLength = (sizeof(_u32Data)) >> 2; // checksum = StartAddress + EndAddress _stPara.u32CheckSum = _stPara.u32StartAddress + (_stPara.u32StartAddress + sizeof(_u32Data)); __ParkingMCU(); // stop interrupt request u8WriteStatus = __u8WritePara(_stPara, 0x1234); // write 0x1234 to user-MTP __RecoverMCU(); // recover interrupt request u16ReadData = __u16ReadPara(_stPara); // read data from user-MTP while(1); }모터 RPM 지령은 u16user_speedcmd = 1000; 이런식으로 작성합니다.도와주십시오 ㅜㅜ
댓글 1
조회수 716master님의 댓글
master 작성일
중간에 변경 할 필요가 없는 데이터는 코드메모리에 선언하면 됩니다.
주로 폰트 같은 것을 선언 할 때 많이 사용하는 방법인데요
mcu마다 사용방법이 다를 수 있으니 예제를 잘 찾아보세요