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

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