STM32H743:程序的启动

从BOOT说起

BOOT在词典的解释为:

boot:(亦作 boot-up)[usu. as modifier] the process of starting a computer and putting it into a state of readiness for operation (电脑的)启动

既然是引申义,写者想它和靴子的联系,于是想到如下情景:当从屋子里要出门时,需要穿上长靴才能走后续的路,而程序需要知道指令首地址才能运行。不要问我为什么不是shoe.

 

在标准模式下,当复位发生时,由BOOT脚及BOOT_ADD0/1选项字将确定内核跳转到的地址。BOOT脚接低电平时,启动地址为0x08000000,即用户闪存存储空间(user Flash memory)的首地址;BOOT脚接高电平时,启动地址为0x1FF00000,即系统闪存存储空间(system Flash memory)的首地址,而在也是启动引导程序bootloader的首地址(后者属于前者)。

在评估板的BOOT脚一般接低电平,那么程序直接运行用户程序,即“.s”文件中的程序,那部分属于汇编和Cortex-M架构的内容了,这里不细展开。而当用户程序编写时有BUG,如写Flash时把Flash锁了,或设置低功耗模式,将导致新的程序下载不进去。那么把BOOT脚接高电平,程序将运行意法固化在系统存储中的BootLoader程序,对用户来说相当于ROM区域的程序,没有BUG,用户就可以在这个模式下通过SWD或bootloader的方式下载程序了。

BootLoader

在bootloader中,程序将在主循环等待和确定上位机通过某种方式(如UART,SPI)与它通信[2],而上位机可用通过如MCUISP这个的上位机软件实现具体的通信过程。

如果确认是串口与它通信,那么程序将在子循环通过具体的通信协议来擦除闪存、读/写保护设置和写入用户程序。

 

访问方式

注:前面说的是在默认访问方式——标准模式下进行的。

标准模式:用户存储(User memory)包含应用程序代码和数据,同时通过STM32 bootloader程序加载系统内存。当复位发生时,由BOOT脚及BOOT_ADD0/1选项字将确定内核跳转到的地址。(STM32 bootloader程序是出厂时固化到Flash的程序)

安全访问模式:此模式下,微控器总是从 secure bootloader 程序启动。于是,如果不需要安全服务,代码将安全地跳转到由BOOT脚及BOOT_ADD0/1选项字确定的(用户程序)启动地址。

从安全区域运行的代码才能访问Secure-Only区域 .安全访问模式是通过置位SECURE选项字位并且单片机复位进入的。

由“Table 17. Option byte organization”的出厂默认值知,默认情况下(即意法半导体交付设备时),使用的是标准模式,存储映射位SWAP_BANK==0。

注:这里需要对照着“2.6 Boot configuration”来看。寄存器BOOT_ADD0/1的值表示4字节地址值的高两字节。

 

 

存储映射

记得stm32f103的是将Flash地址从0x0800,0000映射到了0x0000,0000,而在stm32h743中,Flash的0x0000,0000地址是给ITCM的(这一点在程序调试时需要特别注意)。Stm32743中的存在着另一种存储映射,由SWAP_BANK选项位控制(默认设置为0,下电不丢失),具体见表15。存储映射是在上电复位或系统复位后确定的,在程序正常运行过程中不会改变,修改存储映射见图10。

由于地址映射的不同,stm32f103上错误地进行了空指针的解引用(dereference null pointer),将出现总线错误,但在stm32h743上,将会不知不觉地改变ITCM内的值,而不会直接出发错误。

 

参考资料

[1] RM0433 Reference manual :STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm®-based 32-bit MCUs

[2] AN2606 Application note :STM32 microcontroller system memory boot mode

[3] AN3155 Application note : USART protocol used in the STM32 bootloader

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32H743的DAC程序是用来控制芯片上的数字模拟转换器(DAC)的。DAC是一种电子设备,用于将数字信号转换为模拟信号。在STM32H743中,DAC有多个通道,每个通道都可以输出一个模拟信号。 在编写STM32H743的DAC程序时,首先需要进行硬件配置。这包括启用DAC时钟、配置DAC通道、设置DAC输出引脚等。如下所示: 1. 启用DAC时钟:先要确定所使用的DAC模块,然后根据其模块号对应的时钟使能位来开启DAC时钟。 2. 配置DAC通道:通过DAC_CR寄存器来配置通道的输出模式、触发模式等。还可以设置参考电压和数据对齐模式。 3. 设置DAC输出引脚:使用GPIO初始化函数来设置DAC输出引脚,配置为模拟输出模式。 在程序的主循环中,可以通过修改DAC数据寄存器(DAC_DHRx)的值来改变输出的模拟信号。可以使用定时器或外部触发来控制DAC输出的时机。 例如,如果想输出一个正弦波到DAC通道1,可以采用以下步骤: 1. 首先,需要将正弦波的采样数据存储在一个数组中。 2. 在程序主循环中,使用一个定时器来定时更新DAC数据寄存器(DAC_DHR1)的值。 3. 在定时器中断处理函数中,根据波形数组的索引值,将对应的数据写入DAC数据寄存器。 4. 还可以通过外部触发来触发DAC的数据更新,以实现更高精度的输出。 综上所述,STM32H743的DAC程序需要进行硬件配置和数据更新的步骤,以实现对模拟信号的输出控制。 ### 回答2: STM32H743是STMicroelectronics(ST)推出的一款高性能微控制器,内置DAC(数字模拟转换器)模块。DAC模块可将数字信号转换为模拟信号,用于音频处理、音频播放、电压输出等应用。 在编写STM32H743的DAC程序时,需要以下步骤: 1. 设置DAC模块的时钟:首先,需要根据系统时钟配置DAC模块的时钟。通过对DAC_CCR和DAC_MCR寄存器进行设置,可以选择使用外部时钟或内部时钟。 2. 配置DAC通道:STM32H743的DAC模块具有多个通道,可以同时转换多个信号。通过配置DAC_CR寄存器,可以选择通道数量和工作模式。可以选择单通道或双通道模式。 3. 配置DAC输出:DAC的输出可以是单端模式或差分模式。通过设置DAC_CR寄存器的对应位来选择输出模式。 4. 配置DAC数据寄存器:DAC数据寄存器用于存储需要转换为模拟信号的数字信号值。通过写入DAC_DHRx寄存器(其中x为通道号),可以将数字信号值加载到数据寄存器中。 5. 启动DAC转换:为了启动DAC转换,需要设置DAC_CR寄存器的相应位(EN1或EN2)。在启动转换之前,可以通过设置DAC_CR寄存器中的注射软件触发位进行校准。 6. 等待DAC转换完成:在转换开始后,可以通过读取DAC_SR寄存器中的状态位来检查转换是否完成。如果转换完成,可以读取输出的模拟信号值。 以上是编写STM32H743的DAC程序的基本步骤,根据具体应用场景和需求,还可以进行更多的配置和调节。例如,可以设置DAC的输出缓冲区、参考电压源和校准值等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值