关于#STM32#的问题,如何解决?

求:STM32F407ZE调用子程序实现R3后4位十六进制转换位对应的ASCII码,并将十六进制数及对应结果以从20000000开始的单位存储在内存中

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

volatile unsigned int * const pMem = (unsigned int *)0x20000000;  // 定义内存地址起始位置

void hex_to_ascii(unsigned short hex)    // 将16进制转换成4个ASCII字符
{
    char str[5];        // 存储转换后的ASCII字符串
    int i;
    
    sprintf(str, "%04X", hex);    // 将16进制数转换成字符串
    for(i=0; i<4; i++)            // 将每个字符存储到内存中
    {
        *pMem = str[i];
        pMem++;
    }
}

int main(void)
{
    unsigned short hex_data = 0x1234;  // 假设输入的16进制数为0x1234
    
    // 转换16进制数的最后4位为ASCII字符,并存储到内存中
    hex_to_ascii(hex_data & 0x0FFF);
    
    // 将输入的16进制数存储到内存中
    *pMem = hex_data;
    
    return 0;
}