单片机与嵌入式的区别
#1:单片机是一种芯片,组成部分有:中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器。
#2:大学时学习的是51单片机,出来工作后接触的是stm32单片机(如STM32F207ZC),嵌入式是一个系统,类比如Linux系统那样,有文件目录结构,app可以在上面跑,可以后台调试查看进程等等。
#3:
一个完整的单片机程序往往需要移植系统进行开发,例如ucos(ucos-II)操作系统,rtos系统等等配合开发。
一个完整的嵌入式系统往往需要重烧系统:uboot,内核,文件系统;然后要考虑接口,接线,装驱动,装软件(app)等等问题。
#4:
一个单片机程序一般都是用keil uvision4,keil uvision5,keil MDK等等软件进行开发,调试。
一个嵌入式程序一般是用Xilinx SDK进行开发。
#5:
调试单片机和嵌入式程序一般都可以通过串口(如rs232,usb转ttl串口)进行调试,一般都可以通过j-link进行软件烧录。
#6:
k4,k5,sdk可以生成的目标文件可以有:Hex、bin、axf、elf等文件。
keil从0开始新建工程
这篇链接写得很详细,特地引转发一下:“STM32F4教程从零开始1——建工程”
https://blog.csdn.net/linxiaobo110/article/details/40349183
stm32标准外设库
这篇链接写得很详细,特地引转发一下:“STM32F20x_StdPeriph_Lib_V3.5.0库全面解析”
https://blog.csdn.net/u011511430/article/details/17322643
移植ucos-ii
本文例子对应stm32f207zc移植的ucos-ii。
一个简单的单片机代码框架
#include "stdio.h"
#include <includes.h>
#include "os_cpu.h"
#include "ucos_ii.h"
static OS_STK TaskStk[1024];
static OS_STK AppTask1Stk[1024];
//任务1线程
void AppTask1(void *p_arg)
{
while(1)
{
//USER_OSTimeDlyHMSM(0, 0, 1, 0);
//to do
}
}
//在这里创建不同的线程任务
void Task(void *pdata)
{
//创建线程任务1
OSTaskCreate(AppTask1,(void *)0,
&AppTask1Stk[1024-1],
30);
//在这里创建不同的线程任务,to add
//创建任务n
}
static void init()
{
//初始化LED
//蜂鸣器初始化
//系统时钟配置
//SRAM初始化
//串口1,2,3等初始化
//初始化网络
//uc/os初始化
OSInit();
}
int main(void)
{
int ret = 0;
init();
ret = OSTaskCreateExt(Task,
(void *) 0,
&TaskStk[1024-1],
30,
30,
(OS_STK *)&TaskStk[0],
1024,
(void *) 0,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
OSStart();
}
自己写了一个简单demo链接:
https://download.csdn.net/download/Binair2019/12003498