stm32单片机开发

单片机与嵌入式的区别

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章