久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
大彩串口屏控制BYJ步進(jìn)電機(jī)(基于freertos)源程序
[打印本頁]
作者:
jzdcff
時間:
2019-8-5 21:59
標(biāo)題:
大彩串口屏控制BYJ步進(jìn)電機(jī)(基于freertos)源程序
stm32f103rct6,正點(diǎn)原子mini板,大彩4.3寸串口屏,w25q16掉電保存數(shù)據(jù)。基于freerto。 //學(xué)習(xí)交流
單片機(jī)源程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "FreeRTOS.h"
#include "task.h"
#include "hmi_driver.h"
#include "hmi_user_uart.h"
#include "cmd_queue.h"
#include "cmd_process.h"
#include "stdio.h"
#include "stdint.h"
#include "hmi_ctl.h"
#include "motor.h"
#include "spi.h"
#include "flash.h"
extern struct Para xi;
extern struct Para yu;
volatile uint32 timer_tick_count = 0; //定時器節(jié)拍
static uint8 update_en = 0;
uint8 cmd_buffer[CMD_MAX_SIZE];//指令緩存
uint8 jogadd ; //對應(yīng)ccw
uint8 jogsub ; //對應(yīng)cw
int32 jogSpeed;
int32 Number=0;
int32 huanLength;
int32 huanSpeed;
const u8* inbuffer[];
#define SIZE 10
u8 datatemp[SIZE];
#define FLASH_SIZE 2*1024*1024 //FLASH 大小為2M字節(jié)
//任務(wù)優(yōu)先級
#define START_TASK_PRIO 1
//任務(wù)堆棧大小
#define START_STK_SIZE 128
//任務(wù)句柄
TaskHandle_t StartTask_Handler;
//任務(wù)函數(shù)
void start_task(void *pvParameters);
//任務(wù)優(yōu)先級
#define LED0_TASK_PRIO 3
//任務(wù)堆棧大小
#define LED0_STK_SIZE 50
//任務(wù)句柄
TaskHandle_t LED0Task_Handler;
//任務(wù)函數(shù)
void led0_task(void *pvParameters);
//任務(wù)優(yōu)先級
#define LED1_TASK_PRIO 3
//任務(wù)堆棧大小
#define LED1_STK_SIZE 50
//任務(wù)句柄
TaskHandle_t LED1Task_Handler;
//任務(wù)函數(shù)
void led1_task(void *pvParameters);
u8 key;
void SetScreen(uint16 screen_id);
void UpdateUI(void);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設(shè)置系統(tǒng)中斷優(yōu)先級分組4
delay_init(); //延時函數(shù)初始化
uart_init(115200); //初始化串口
LED_Init(); //初始化LED
//創(chuàng)建開始任務(wù)
xTaskCreate((TaskFunction_t )start_task, //任務(wù)函數(shù)
(const char* )"start_task", //任務(wù)名稱
(uint16_t )START_STK_SIZE, //任務(wù)堆棧大小
(void* )NULL, //傳遞給任務(wù)函數(shù)的參數(shù)
(UBaseType_t )START_TASK_PRIO, //任務(wù)優(yōu)先級
(TaskHandle_t* )&StartTask_Handler); //任務(wù)句柄
vTaskStartScheduler(); //開啟任務(wù)調(diào)度
}
//開始任務(wù)任務(wù)函數(shù)
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //進(jìn)入臨界區(qū)
//創(chuàng)建LED0任務(wù)
xTaskCreate((TaskFunction_t )led0_task,
(const char* )"led0_task",
(uint16_t )LED0_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED0_TASK_PRIO,
(TaskHandle_t* )&LED0Task_Handler);
//創(chuàng)建LED1任務(wù)
xTaskCreate((TaskFunction_t )led1_task,
(const char* )"led1_task",
(uint16_t )LED1_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED1_TASK_PRIO,
(TaskHandle_t* )&LED1Task_Handler);
vTaskDelete(StartTask_Handler); //刪除開始任務(wù)
taskEXIT_CRITICAL(); //退出臨界區(qū)
}
// LED0主任務(wù)函數(shù)
void led0_task(void *pvParameters)
{
u8 i=0;
int32 speed=0;
qsize size = 0;
uint32 timer_tick_last_update = 0; //上一次更新的時間
SPI_Flash_Init(); //SPI FLASH 初始化
/*串口初始化,波特率設(shè)置為9600*/
UartInit(9600);
SetScreen(0);
SetTextValueInt32(0,15,Number);
/*清空串口接收緩沖區(qū)*/
queue_reset();
/*延時等待串口屏初始化完畢,必須等待300ms*/
vTaskDelay(300);
while(1)
{
key=KEY_Scan(0);
if(key==WKUP_PRES) //WK_UP 按下,寫入W25Q64
{
sprintf((char*)inbuffer, "%d", xi.Length);
SPI_Flash_Write((u8*)inbuffer,FLASH_SIZE-100,SIZE); //從倒數(shù)第100個地址處開始,寫入SIZE長度的數(shù)據(jù)
}
if(key==KEY0_PRES) //KEY0 按下,讀取字符串并顯示
{
SPI_Flash_Read(datatemp,FLASH_SIZE- 100,SIZE); //從倒數(shù)第100個地址處開始,讀出SIZE個字節(jié)
sscanf(datatemp, "%u", &xi.Length); //字符串轉(zhuǎn)整數(shù)
SetTextValueInt32(2,14,(int)xi.Length);
}
// if(IN1==1) {LED0=1;}
size = queue_find_cmd(cmd_buffer,CMD_MAX_SIZE); //從緩沖區(qū)中獲取一條指令
if(size>0)// 大于0表示是完整指令
{
ProcessMessage((PCTRL_MSG)cmd_buffer, size);//指令處理,將cmd_buffer強(qiáng)轉(zhuǎn)為PCTRL_MSG數(shù)據(jù)結(jié)構(gòu)
}
if(jogadd==1)
{
for(i=0;i<8;i++) //
{
switch(i)
{
case 7:IN1=1;IN2=0;IN3=0;IN4=0;break;
case 6:IN1=1;IN2=1;IN3=0;IN4=0;break;
case 5:IN1=0;IN2=1;IN3=0;IN4=0;break;
case 4:IN1=0;IN2=1;IN3=1;IN4=0;break;
case 3:IN1=0;IN2=0;IN3=1;IN4=0;break;
case 2:IN1=0;IN2=0;IN3=1;IN4=1;break;
case 1:IN1=0;IN2=0;IN3=0;IN4=1;break;
case 0:IN1=1;IN2=0;IN3=0;IN4=1;break;
default:break;
}
vTaskDelay(1);
}
}
else if(jogadd==0)
{
IN1=0;IN2=0;IN3=0;IN4=0;
}
} //while(1)右括號
}
//LED1任務(wù)函數(shù)
void led1_task(void *pvParameters)
{
u8 i,j;
while(1)
{
UpdateUI(); vTaskDelay(800);
key=KEY_Scan(0);
if(key==2||jogadd==1)
{
// LED1=0;
// vTaskDelay(800);
// LED1=1;
// vTaskDelay(200);
// LED1=0;
for(i=0;i<8;i++) //
{
switch(i%2)
{
case 0:LED1=0;break;
case 1:LED1=1;break;
// default:break;
}
vTaskDelay(800);
}
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
Welding20190802掉電保存.7z
(351.02 KB, 下載次數(shù): 130)
2019-8-6 00:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
bemc
時間:
2019-8-6 09:58
系統(tǒng)的思維了 更高一級了
作者:
reynold
時間:
2020-12-29 18:48
看看電機(jī)和屏幕處理的程序
作者:
bsp_led
時間:
2021-4-19 18:35
來學(xué)習(xí),這程序有點(diǎn)長啊,對于初學(xué)者,頭大
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩性在线
|
www.蜜桃av
|
91精品久久久久久综合五月天
|
草草在线观看
|
国产日韩精品一区二区
|
美女视频黄的
|
久草成人
|
欧美一区二区三区
|
国产精品永久免费
|
欧美日韩一二三区
|
欧美高清视频一区
|
天天射影院
|
蜜桃视频在线观看www社区
|
狠狠撸在线视频
|
天天天操
|
黄色一级大片在线免费看产
|
五月婷婷 六月丁香
|
古典武侠第一页久久777
|
做a网站
|
日韩在线视频免费观看
|
91视频在线
|
99爱国产
|
国产精品免费av
|
91免费视频
|
午夜免费福利片
|
亚洲网站在线观看
|
亚欧洲精品在线视频免费观看
|
欧美激情一区二区三区
|
天天综合国产
|
国产精品久久久久久福利一牛影视
|
国产亚洲精品久久久久久牛牛
|
成人免费视频久久
|
国产在线视频一区二区董小宛性色
|
毛片在线免费
|
国产精品1区2区
|
日本黄色影片在线观看
|
午夜一级大片
|
国产高清在线精品
|
久久久久91
|
影音av
|
精品久久久久久亚洲综合网站
|