Time of Update: 2018-12-05
練習IO口庫函數操作。//相序uint16_t phasecw[4] ={0x2000,0x0001,0x0004,0x0008};// D-C-B-Auint16_t phaseccw[4]={0x0008,0x0004,0x0001,0x2000};// A-B-C-D //步進電機相關IO口初始化// IN4:PC13// IN3:PC0// IN2:PC2// IN1:PC3void Moto_Init(void){GPIO_InitTypeDef GPIO_InitStructure;
Time of Update: 2018-12-05
前篇的插入排序演算法,為了給插入元素空出位置,經常要後移騰出位置而進行大量後移操作,如果是移動資料元素規模大的話,就會耗時降低效率。插入排序操作特點:先確定排序對象,再確定插入位置。選擇排序操作特點:先確定排序位置,再確定排序對象。選擇排序大概流程就是從第一個元素開始,然後與後面的元素依次比較大小,比當前元素小的話就記下當前最小位置,繼續比較,直到這輪比較完畢,這樣就可以找出這一輪最小的元素,然後把此最小元素放入第一個元素位置。然後從第二個元素開始,繼續上面的操作。最後就能排好序。下面的代碼實現
Time of Update: 2018-12-05
在前篇的選擇排序中,n個資料最多進行n-1次交換,但每次交換前要進行大量比較操作來確定交換對象,比較次數遠大於交換次數。而交換操作只是資料的讀寫,資料規模較小時,其工作量比比較工作量小。用增加交換的次數來減少比較次數有可能是合理的,所以冒泡排序的好處是以交換為主要手段。如果排序對象基本有序時,冒泡排序演算法將具有較高的效率。這是因為冒泡排序中有個標誌變數是用於提前終止排序的,也即排序可以半途終止。下面的代碼進行了冒泡排序的練習。#include <stdio.h>#define
Time of Update: 2018-12-05
寫WEB程式的時候,發現如果加上步進電機控制的話,就會出現問題。原因是如果把電機控制放在uip迴圈中處理的話,因為控制電機涉及到時間問題。所以必須解決,想到的方法就是多任務的思想。把步進電機的處理放在定時器中斷裡面。這樣的話就能避免問題了。順便學習了庫函數操作定時器。這裡用到的定時器功能簡單,只需要產生更新中斷。下面是定時器初始化代碼//定時器3初始化//arr:定時重裝值//psc:分頻值void TIM3_Init(uint16_t arr, uint16_t
Time of Update: 2018-12-05
這是官方文檔中的例子代碼,以此瞭解一下uip處理web server是怎麼樣的。struct example5_state{char *dataptr;unsigned int dataleft;}void example5_init(void){uip_listen(HTONS(80));uip_listen(HTONS(81));}void example5_app(void){struct example5_state *s;s = (struct
Time of Update: 2018-12-05
昨天編寫程式的時候,要使用一個按鍵作為返回功能,這個按鍵是P0_4,然而我發現按下此按鍵時沒有作用。調試發現讀出此IO口的電平值一直是0.一直被拉低了。開始以為是硬體問題,查了下也沒有問題。繼續查程式。最後才發現是連接埠功能設定的問題。開始老闆的程式對P0這樣賦值的P0SEL|=0X3C,這樣的話,用到了P0_4,P0_5作為UART的硬體流量控制,改為P0SEL|=0x0C,問題就解決了。取消掉UART硬體流量控制。但是疑問是開始為0X3C時,同樣作為P0_5的一個按鍵就沒有影響呢。
Time of Update: 2018-12-05
今天看了個有意思的程式,用遞迴就能求解字串長度。然後自己敲敲代碼試試看。#include <stdio.h>#include <stdlib.h>#include <assert.h>#define MAXSIZE 50int mystrlen(const char *strDest){assert(NULL != strDest);//assert宏入口檢測if('\0' == *strDest)//字串結束return 0;elsereturn (1 +
Time of Update: 2018-12-05
首先說明,IAR for 8051為7.51版本,作業系統為windows7 32位。上手CC2530,在IDE的使用上就遇到了2個問題。一個是用SmartRF Programmer Flash下載HEX檔案不成功,提示說could not open hex。這個問題在TI的論壇裡找到解決辦法。原來工程配置的問題。linker選項中,Output標籤裡面進行如下改動:去掉Output file中Override default複選框中的勾勾選Allow
Time of Update: 2018-12-05
很久沒有來部落格了。心情也不好,但是畢業設計還是要繼續的。跟老師商量改了畢業設計的要求,MCU換了,TCP/IP協議棧也換了,換成STM32與UIP了。換的原因很蛋疼,之前的那個跟我用的WIN7相容性很差,很多軟體出問題,所以放棄了。先從uip看起,版本1.0,貌似很久沒有更新,這是最新的版本了吧。看看uip英文資料開始學習,還是為了防止忘記,順便為畢業論文準備,所以記下一些學習內容。——————————————————————————————————————————————————分割線,上面
Time of Update: 2018-12-05
IAR語言擴充特性裡有個##value##這種擴充語言特性,主要用於宏的實現。其中#號中間的value就是你傳遞進去的值。可以用來提高代碼複用性。在編寫CC2530的Timer3與Timer4時就可以使用。因為這兩個8位定時器特性基本一致。下面是實現通用的Timer3與Timer4標頭檔實現,用一個標頭檔可以實現Timer3或Timer4操作。#ifndef _TIMER34_H#define _TIMER34_H#define CLEAR_TIMER34_COUNTER(timer)\ T#
Time of Update: 2018-12-05
這個是網上看到的資料,粘貼如下。總算大致理解了HTTP協議這個過程。 HTTP(HyperText Transfer
Time of Update: 2018-12-05
在很多項目中都會用到ListView,但基本都需要進行重寫Adapter,但每次都是會找好半天,寫在這兒方便以後copy~~xml定義一個ListView<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"
Time of Update: 2018-12-05
做這個畢業設計需要用到HTML,自己來編寫一個簡單的網頁介面。所以這兩天看了下HTML相關知識,還是很好理解。也發現了一個學習WEB知識很好的網站。http://www.w3schools.com是國外的一個網站。不過連結很快,且有多種語言支援。不過看英文比較好,都是比較簡單的英文。就是這個網址裡我學習了HTML的相關知識。下面是從網站中轉過來的HTML快速一覽。HTML Basic Document<!DOCTYPE
Time of Update: 2018-12-05
這個工作主要是根據網友的經驗資料來學習移植的。總的來說需要下面幾個參考資料。ARM Cortex-m3權威指南官方移植文檔資料網友移植成功經驗資料這三種資料在我的資源上傳裡面都能找到。我在官網上下的是官方已經移植好的到STM32F103評估板的資料,很多部分已經實現了,所以需要改動的地方很少,不同的地方可以參考第三種網友移植成功經驗資料,裡面有詳細說明。我下的是ucosii2.86版本。下面說說移植過程:移植主要涉及到兩個源檔案,os_cpu_c.c和os_cpu_a.asm,os_cpu.h。
Time of Update: 2018-12-05
調試ARM,要遵循ARM的調試介面協議,JTAG就是其中的一種。當模擬時,IAR、KEIL、ADS等都有一個公用的調試介面,RDI就是其中的一種, 那麼我們如何完成RDI-->ARM調試協議(JTAG)的轉換呢? 有以下兩種做法: 1. 在電腦上寫一個服務程式,把IAR、KEIL和ADS中的RDI命令解析成相關的JTAG協議,然後通後一個物理轉換介面(注意,這個轉換隻是電氣物理層 上的轉換,就像RS232那樣的作用)發送你的的目標板。 H-JTAG就是這樣的。 H-JTAG的硬體就僅
Time of Update: 2018-12-05
觸控螢幕驅動程式設計觸控螢幕工作原理:四線電阻屏結構上,是在玻璃或丙稀酸基板上覆蓋兩層均勻導電的ITO層,分別作為x電極和y電極,他們之間由均勻排列的透明格點分來絕緣。X電極和y電極的正負端由導電線(黑色粗體線)從兩端引出,引出x-,x+,y-,y+.當接觸觸控螢幕表面並施加壓力時,上層的ITO導電層和下層的ITO導電層發生接觸,形成上面右圖的等效電路。 1.y座標計算:在y+加驅動電壓V-drive,y-接地。X+作為引出端測量接觸點的電壓,由於ITO層均勻導電,觸電電壓與V-drive電壓之
Time of Update: 2018-12-05
摘要: 多播通訊是現在的一大網路熱點技術。本文主要敘述了IP多播技術的基本概念,多播的編址,Internet組管理協議(IGMP),多播路由演算法和已有的多播選路協議,以及正在研究的新多播選路協議。還介紹了多播中的主要問題:安全問題和QoS問題,並簡要多播應用現狀及前景。 關鍵詞:多播組 多播路由 多播樹1.引言 隨著Internet的發展,出現了如ApsaraVideo for
Time of Update: 2018-12-05
學習新知識我的一個方法是:1.先把握住新東西大的一個架構、涉及的內容、範圍;簡而言之:理清架構,把握重點;2.在看清楚大的架構所涉及的知識時,再度量哪些是我所需要必須學習的(重點),哪些是現在不急著掌握的可以以後學習;簡而言之:去我所需,為我所用;3.理論歸理論,掌握理論知識的基礎上,加以應用,能更深刻的理解這些知識點;簡而言之:實踐出真知; 聲明:本文部分參考自--《STM32自學筆記集合》 第一講:
Time of Update: 2018-12-05
寫作原由:因為之前有對stm32 優先順序做過研究,但是沒時間把整理的東西發表,最近項目需要2個串口,但是不是兩個串口同時使用,只是隨機使用其中一個,程式對2個串口的優先順序需要配置;此文思路:“中斷優先順序”思維導圖-->關鍵要點--->結合圖和要點相關程式應用常式講解;我們先來看ST公司的一張圖:我自己依據此圖理解,應用思維導圖畫了一張方便理解:(如果看不清可通過ctrl+滑鼠滑輪
Time of Update: 2018-12-05
寫作原由:今日接手用stm32f100xx晶片開發的項目,以前用的是stm8s 和stm32f103xx晶片;因為在別人的項目代碼的基礎上做2次開發,但是發現那個代碼main函數中沒有對系統時鐘的設定的相關函數,一直納悶,但也沒有深究,直至昨日 調試時出現串口收發資料出錯,原始碼在原項目的板子上串口發送、接收資料正常,同樣程式在項目板子上收發的資料不正確, 兩塊板子晶片一樣,串口收發管腳一樣,最後發現原來板子外部晶振是8MHZ ,新板子外部晶振是12MHZ;