idea6410裸调led蜂鸣器的方法

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

平台:idea6410

编译器:arm-linux-gcc-4.3.2


当我们没有jtag等工具是也还是可以裸机调试的,不过的借助uboot;

下面是源码及步骤:

1、start.S

.text
.global _start


_start:
    ldr r0,=0x7e004000     //关看门狗
    mov r1,#0x0
    str r1,[r0]


    ldr sp,=0xc0008000     //设置运行时栈
    bl main               //跳转主函数

stop:
    b stop

2、led.c

    > File Name: led.c
    > Author: hcm
    > Mail: huangchangming2011@163.com 
    > Created Time: 2013年12月21日 星期六 00时43分26秒


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


#define GPFCON (*(volatile unsigned long *)0x7F0080A0)
#define GPFDAT (*(volatile unsigned long *)0x7F0080A4)
#define GPMCON (*(volatile unsigned long *)0x7F008820)
#define GPMDAT (*(volatile unsigned long *)0x7F008824)


void delay(int n);


int main(void)
{   
    GPFCON |= (1<<30);                
    GPFDAT |= (1<<15);                   //蜂鸣器一直响
    GPMCON = 0x0;
    GPMCON |= (1<<0)|(1<<4)|(1<<8)|(1<<12);
    while(1)                          //四个led一闪一闪
    {
        GPMDAT |= 0xf;
        delay(200000);
        GPMDAT &= ~0xf;
        delay(200000);
    
    }


    return 0;
}


void delay(int n)             //延时
{
    int i;
    for(i=0; i<n; i++)
        ;
}


3、Makefile

led.bin:start.S led.c

arm-linux-gcc -c -nostdlib start.S -o start.o

arm-linux-gcc -c -nostdlib led.c -o led.o

arm-linux-ld -Ttext c0008000 start.o led.o -o led.elf

arm-linux-objcopy -O binary -S led.elf led.bin

clean:

rm *.o *.elf *.bin 


4、make编译

5、将led.bin烧写到已经烧写好uboot的板子上,命令:

dnw c0008000

go c0008000

这样你就可以看到效果了(*^__^*) 嘻嘻……

注意:

在编译的时候如果不加上-nostdlib选项那么将出现:

ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
make: *** [led_on_c.bin] Error 1

的错误!


提示的错误信息是EABI不支持导致的,建议编译裸奔程序时使用3.4.5的交叉编译器,EABI使用的很多代码(特别是汇编)可能会出错,目前网络上还没有找到专门介绍EABI编译器的编程的文档。修改etc/profile文件的配置,然后source /etc/profile即可

 arm-linux-gcc加上-nostdlib选项也OK

因为-nostdlib不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件。



开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 过采样与欠采样构成了数字信号处理领域中两种基础的采样策略,它们在工程实践应用时各自展现出独特的长处与短处及适用情境。以下将深入阐释这两种采样方法的运作机制,并对它们在实际操作中的区别进行细致对比。 我们首先阐释过采样的核心概念。过采样(Oversampling)一般是指运用高于必要标准频率对模拟信号实施采样。举例而言,当信号频率为70MHz且信号带宽为20MHz时,依据奈奎斯特采样准则,理论上采样频率只需略高于40MHz(即信号带宽频率的两倍)即可达成无失真采样。然而,在现实操作中,系统构造者常常会采用超过140MSPS(每秒百万次采样)的采样速率,这通常超出理论所需。过采样的主要不利之处涵盖:提升ADC输出数据速率,引发FPGA的时序挑战;增大功耗、ADC及FPGA的制造成本。尽管存在这些不足,过采样依然具备其有利之处,例如可提供处理增益、频率规划的伸缩性以及能够处理更宽的信号带宽。 接下来,我们探讨欠采样的基本原理。欠采样(Undersampling)是指以低于理论标准频率对信号进行采样,这在处理高输入信号频率时尤为有效。例如,针对70MHz的中频(IF)信号,通过欠采样能够采用低于40MHz的采样频率进行采样,从而将数据速率降至FPGA,减少时序挑战,节省能量消耗和成本。实现欠采样的关键设计考量在于它能够在系统设计中达成所需的ADC动态性能。 欠采样的优势体现为能够简化硬件构造,比如降低对高速数据捕获的需求,并且在设计条件允许时,可选用较慢的ADC来削减成本。然而,欠采样技术也存在其局限性,例如在ADC的非理想表现可能导致非线性失真,诸如二阶(HD2)和三阶(HD3)谐...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值