本人的所选的时NUC140VE3AN,50MHz主频,128K字节 FLASH,16K字节RAM。
工程起步的话最好从开发版例程或者网上下载,自己从零新建工程的话需要如下一些文件
还需要官方的库函数以及对应的库文件
之后还要正确设置KEIL工程(如果用的是KEIL开发的话)
这些对入门者来说都不友好,所以建议在别人新建好的例程上进行二次开发,省时省力,尤其是现如今ARM芯片种类繁多,应当把精力用在最关键的地方。
然后先不要管启动的.s程序。
直接从Main函数开始,贴出程序如下:
/*****************************************
*文件名: Tx_main.c *
*功能:主程序 *
*****************************************/
#include "Tx_control_include.h"
/****************************************
************* Main Function**************
*****************************************/
int32_t main (void)
{
//initialize_watchdog (); //初始化看门狗
setup_HCLK (); //设置HCLK即CPU主频
setup_interrupt_order(); //设置中断优先级
at24c32_initialize (); //初始化at24c32
read_default_value (); //读取电台设置默认值
I2C_remote_initialize (); //初始化I2C0
initialize_pins (); //初始化引脚
initialize_timer (); //初始化timer
initialize_timer0 (); //初始化timer0
initialize_timer1 (); //初始化timer1
initialize_timer2 (); //初始化timer2
initialize_timer3 (); //初始化timer3
error_register1.error_sample_all = 0; //初始错误寄存器
status_register2.status_sample_all = 0;
error_output_recover (); //恢复上电复位时输出故障信息为正常
initialize_UART_clock (); //初始化UART0时钟
initialize_UART (); //初始化UART0
VOP_OK_interrupt_initialize (); //安装供电异常中断
ADC_initialize (); //初始化ADC
initialize_SPI (); //初始化SPI
setup_ptt_limit_time (PTT_limit_time);
while (1)
{
monitor_D6 (); //监测D6
monitor_D2 (); //监测D2
monitor_D4 (); //监测D4
}
}
头文件如下:
#ifndef Tx_control_include_h
#define Tx_control_include_h
#include "stdint.h"
#include "DrvSYS.h"
#include "initialize_pins.h"
#include "at24c32.h"
#include "common_variables.h"
#include "I2C_remote.h"
#include "monitor_D2.h"
#include "monitor_D4.h"
#include "monitor_D6.h"
#include "ADC.h"
#include "PTT_control.h"
#include "SPI_U27_U28.h"
#include "temperature_error_solution.h"
#include "UART.h"
#include "supply_28_error_solution.h"
#include "VOP_OK_error_solution.h"
#include "timer.h"
#include "DIRF_DIRR_solution.h"
#include "error_solution.h"
#include "read_default_value.h"
#include "watch_dog.h"
#include "setup_HCLK.h"
#endif
里面的一些子程序在我的其他文章有写:
initialize_watchdog (); //初始化看门狗
https://blog.csdn.net/pxy198831/article/details/8589297
setup_HCLK (); //设置HCLK即CPU主频
https://blog.csdn.net/pxy198831/article/details/8563717
initialize_timer (); //初始化timer
https://blog.csdn.net/pxy198831/article/details/8526338
https://blog.csdn.net/pxy198831/article/details/8856579
ADC_initialize (); //初始化ADC
https://blog.csdn.net/pxy198831/article/details/8611271
initialize_pins (); //初始化I/O口
https://blog.csdn.net/pxy198831/article/details/85231631
initialize_UART (); //初始化UART0
https://blog.csdn.net/pxy198831/article/details/85253604
其余的子程序今后会贴出来,希望对大家有帮助。
SPI的子程序:
https://blog.csdn.net/pxy198831/article/details/85268087
这是编译结果,程序已剪裁,CODE+RO-DATA=程序占用的FLASH大小
RW-DATA+ZI-data(初始化为0的数据)=程序占用RAM大小。
其余代码可从我的其他文章里找,上传的代码保留了最小化工程必须的系统文件和开发库。
你还需要NUC140的手册和开发库的手册稍后上传。(或自行百度)
工程例程代码上传地址为https://download.csdn.net/download/pxy198831/10866894
有钱的捧个钱场,有人的捧个人场^_^