stm32u5
//1 使能系统时钟
// 系统时钟初始化 - 不加入会报错 可以尝试一下
void SystemInit(void)
{
//对地址 0xE000ED88 的内容 进行修改:
//将0X3向左移动20位 或上 0X3 向左移动22位
*(unsigned int*) 0xE000ED88|=((3UL << 20U)|(3UL << 22U));
}
int main()
{
//GPIOC的RCC寄存器地址,将位2置为1,使能GPIOC的RCC时钟
*(unsigned int*)0x56020C8C |=1<<2;
//PC13,配置为通用输出模式,位27和26置为01
*(unsigned int*)0x52020800 &=~(1<<27);
*(unsigned int*)0x52020800 |=1<<26;
//GPIO_OTYPER寄存器位13写入0
*(unsigned int*) (0x52020800+0x04) &=~(1<<13);
//GPIO_OSPEEDR位27和位26写入00
*(unsigned int*) (0x52020800+0x08) &=~(1<<27);
*(unsigned int*) (0x52020800+0x08) &=~(1<<26);
//GPIO_ODR寄存器位13写入1 高电平
*(unsigned int*) (0x52020800+0x14) |=(1<<13);
//PC06,配置为通用输出模式.位13和位12置为01
*(unsigned int*)0x52020800 &=~(1<<13);
*(unsigned int*)0x52020800 |=1<<12;
//GPIO_OTYPER寄存器位06写入0
*(unsigned int*) (0x52020800+0x04) &=~(1<<6);
//GPIO_OSPEEDR位13和位12写入00
*(unsigned int*) (0x52020800+0x08) &=~(1<<13);
*(unsigned int*) (0x52020800+0x08) &=~(1<<12);
//GPIO_ODR寄存器位13写入1 高电平
*(unsigned int*) (0x52020800+0x14) |=(1<<6);
//GPIOC的RCC寄存器地址,将位2置为1,使能GPIOC的RCC时钟
*(unsigned int*)0x56020C8C |=1;
//PA15,配置为通用输出模式,位31和30置为01
*(unsigned int*)0x52020000 &=~(1<<31);
*(unsigned int*)0x52020000 |=1<<30;
//GPIO_OTYPER寄存器位15写入0
*(unsigned int*) (0x52020000+0x04) &=~(1<<15);
//GPIO_OSPEEDR位31和位30写入00
*(unsigned int*) (0x52020000+0x08) &=~(1<<31);
*(unsigned int*) (0x52020000+0x08) &=~(1<<30);
//GPIO_ODR寄存器位15写入1 高电平
*(unsigned int*) (0x52020000+0x14) |=(1<<15);
return 0;
}
//2 使能GPIO总线上的时钟
//3 配置GPIO相关的寄存器