推荐阅读最新更新时间:2024-11-03 13:19
关于STM32F4的IAP的一点点记录
看了原子的STM32的IAP 教程,一开始还以为bootloader是啥意思,差点跟uboot搞混淆了,其实stm32的“bootloader”不需要自己写汇编和链接脚本,Boot和App都是单片机程序,只是实现的功能不同,前者是为了引导App,后者是为了实现业务逻辑。只不过boot是有写flash或者sram的功能,再加上通信口(USB/USART etc. )来接收所谓的应用程序app代码。然后跳转到该代码执行就好了,但是要重新设置一下中断向量表的位置,要不然两个程序的中断可能会混淆。也就是说boot代码的中断要进boot代码的irq handler 而 app代码的中断要进app代码的irq handler。下边就以flas
[单片机]
80C51复位标志位的设置与应用研究
引言 设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。 MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地
[应用]
stm32f407_hal库_工程模板
硬件平台: stm32f407ve 软件平台: win10 (OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.18363 N/A Build 18363) Keil5 5.26.2 HAL库版本: 2.14.0(目前下载的最新的) 1.在工程路径下建立一个空的文件夹 2.打开keil5,没有建立工程,应该示空白工程(我的版本是5.26.2)。 3.我现在安装的hal库的版本: 4. 新建工程 5. 选择工程保存的路径,就是第一步新建的文件夹
[单片机]
用Xtensa可配置处理器实现高性能低功耗系统
可配置处理器允许嵌入式开发人员来定制适合目标算法的处理器,使得处理器和算法能够更好地匹配。设计人员可以增加专用的、可变宽度的寄存器,专用的执行部件和更宽的数据总线以达到专用算法的最优处理器配置。 加速FFT运算 按频率抽取快速傅立叶变换FFT算法的核心是一种称为“蝶形”的运算。蝶形操作是FFT算法的最里层循环的运算。每个蝶形运算需要六次加法和四次乘法来计算基2蝶形结果的实部和虚部。采用TIE(Tensilica Instruction Extention)语言,设计团队可以用四个加法器和两个乘法器来扩展整个Xtensa处理器的流水线,以便使得一半FFT蝶形运算可以在一个流水线时钟周期内完成。 Xtensa处理器的可配置数据
[应用]
STM32F407+FreeRTOS+LWIP1.4.1移植问题记录
最近在学习物联网相关的知识,打算用ST的开发板STM32F407ZGT6作为控制中心,上面搭载FreeROTS实时系统,STM32F407开发板作为 TCP client,网络调试助手作为TCP server,利用串口获取两者的连接状态。在用原子的lwip工程移植到自己的STM32F407开发板时,可以正常获取DHCP分配的IP,也能通过网络和网络工具正常通信,但是串口一直提示错误: 从port.c文件中,定位到该行。 从文件中来看,应该是和中断有关的,从网上查阅了很多资料发现,首先怀疑串口的中断的优先级超过FreeRTOS的管理最高优先级,需要将串口中断的优先级降为FreeRTOS的管理最高优先级以下就可以。 据此,分别
[单片机]
STM32f4 GPIO的基础使用-流水灯
#include stdio.h #include stm32f4xx.h void show(void) { int a,b; for(a=2000;a 0;a--) for(b=1200;b 0;b--); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; //使能GPIOF组引脚的时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能GPIOE组引脚的时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,EN
[单片机]
stm8s io配置
stm8s的io有DDR,IDR,ODR,CR1,CR2这几个寄存器。对于io的配置,其实看懂下面这张表就懂了。一般用到的也就是推挽输出,浮空输入和上拉输入。 下面以PC1脚为例说明该如何配置这三种模式。 推挽输出: PC_DDR_DDR1 = 1;//io方向:输出 PC_CR1_C11 = 1;//因为DDR为1,所以CR1置1表示推挽输出模式 PC_ODR_ODR1 = 1;//1:输出高 , 0:输出低 说明,io的CR2寄存器默认为0,一般我不会去修改它的值。只有一次做模拟串口发送时将CR2配置为1 浮空输入: PC_DDR_DDR1 = 0;//io方向:输入 PC_CR1_C11=0;
[单片机]
STM32F429 >> 14. TIM_(一)_基本定时器
将定时器和GPIO 结合起来使用可以实现非常丰富的功能,例如测量输入信号的脉冲宽度、产生输出波形、产生PWM 控制电机状态等。 STM32F42xxx 系列控制器有 2 个高级控制定时器、10 个通用定时器和 2 个基本定时器,还有 2 个看门狗定时器。 控制器上所有定时器都是彼此独立的,不共享任何资源。 其中最大定时器时钟可通过 RCC_DCKCFGR 寄存器配置为 90MHz 或者 180MHz。 就功能上来说通用定时器包含所有基本定时器功能,而高级控制定时器包含通用定时器所有功能。 基本定时器 基本定时器主要两个功能: 第一就是基本定时功能,生成时基; 第二就是专门用于驱动数模转换器(DAC)。 基本定时器
[单片机]