2020年11月16日 星期一

[Eclipse] 修改文字及背景顏色

#ifdef
...
#endif

中間的背景顏色Inactive code highlight


---
背景顏色
General→Editor→Text Editor→Background color


---
控制台背景顏色
C/C++→Build→Console→Background color

2020年10月4日 星期日

[Linux] Kernel函式庫

Kernel

●忙碌等待(busy wait)

會占住CPU,不讓CPU處理其他事,不適合長時間使用.
#include <linux/delay.h>
void mdelay(unsigned long msecs); //毫秒
void udelay(unsigned long msecs); //微秒
void ndelay(unsigned long msecs); //奈秒


不忙碌等待(non-busy wait)
#include <linux/delay.h>
void ssleep(unsigned int seconds);
void msleep(unsigned int mecs);
unsigned long msleep_interruptible(unsigned int mecs);


[C] 函式庫(Library)

ASCII ->Hex
unsigned long int strtoul(const char *str, char **endptr, int base)
str: string
endptr:
base: 這是基數,2~36,或者是特殊值0。

●取絕對值
#include <stdlib.h>
int abs (int j);

●讓程式空轉以達到延遲
__NOP();

●小寫字母轉大寫
int toupper(int c);




access
http://naeilproj.blogspot.com/2015/08/linux-c-c.html


bswap_32
https://man7.org/linux/man-pages/man3/bswap.3.html


dump_stack();
#include <linux/kprobes.h>
#include <asm/traps.h>



stroul
char ptr; 
u32 value stroul("1234", ptr, 10);
把string 1234轉成value 1234
10表10進位(base)

●atoi
value → string

strcat

sscanf

strstr
char *p strstr("abcde", "de")
在abcde中找de, *p為d的位置




2020年9月18日 星期五

[C#] StatusStrip

 1.從工具箱拉StatusStrip,並照下步驟拉兩個StatusLabel.


2.第一個StatusStrip叫Status並修改外觀,第二個無預設名稱.






3.toolStripStatusLabel2.Text = "Test";













2020年9月15日 星期二

[C#] byte/char/string轉換



●byte → char

byte[] byte1 = new byte[5]{0x01,0x02,0x03,0x04,0x05};
char[] char1 = Encoding.ASCII.GetChars(byte1);


●char → byte

char[] char1 = new char[5]{a,b,c,d,e};
byte[] byte1 = Encoding.Default.GetBytes(char1 );


●string  → char[]

string string1 = "abcde";
char[] char1 = string1.ToCharArray(); 


●string  → byte[]
string string1 = "abcde"; 
byte[] byte1 = Encoding.UTF8.GetBytes(string1);
 

●byte[]  → string


byte[] byte1 = new byte[5] { 0x31, 0x32, 0x33, 0x34, 0x35 };
string string1 = Encoding.UTF8.GetString(byte1);



2020年8月12日 星期三

[Linux] Note

 thread介紹

https://blog.gtwang.org/programming/pthread-multithreading-programming-in-c-tutorial/



Ubuntu Linux 中使用網路芳鄰分享目錄


cross compiler: 編譯出來的程式不是給自己用

各版本kernel code
https://elixir.bootlin.com/linux/v5.18.3/source/net

2020年7月25日 星期六

[Win10] 螢幕錄影同時錄電腦內的聲音

錄製Win10螢幕內的影像及聲音

假設您今天要錄youtube的影音,該怎麼做呢?
只要開啟立體聲混音,
方法如下:

Win10同時錄製螢幕內的影像及聲音

2020年7月12日 星期日

[應用程式] Doxyfile Example



/**
* @brief This is an example for Doxyfile.
*
* @param[in] input_1 parameter 1 is a variable for input
* @param[in] input_2 parameter 2 is a variable for input
* @param[out] output parameter 3 is a point for output
*
* @return status code
*
* @retval StatusCode_1 Success
* @retval StatusCode_2 Fail
*/
char ExampleFunction(char input_1, char input_2, char *output)
{
    char status = 0;

    return status;
}


-----------



Doxyfile的預設的註解是解釋在註解後方的程式,若要註解前方的程式
/**< ...mark...*/
/*!< ...mark...*/
//!< ...mark...
///< ...mark...



#Doxyfile#Doxyfile教學#Doxyfile範例

2020年6月27日 星期六

2020年5月22日 星期五

2020年5月17日 星期日

[C] 關鍵字Key word

__attribute__((unused))
消除編譯器對未使用變數的告警

eq.  char test __attribute__((unused));

----

printf("%d %s\n", __LINE__, __func__);
印出當前行號及函式名稱

2020年4月26日 星期日

[C] Error Code

不同的編譯器可能會產生不一樣說明的error code,但都大同小異.
善用Ctrl + F 收尋


2020年4月6日 星期一

[C] 基礎

C只有Call by value

Object: 有占空間的就教物件,所以物件會有明確大小 (eq. int a)

*(int32_t *)(0x11aa) = 0x01;  //location value:*(int32_t *)(0x11aa) , assignment: =

2020年4月5日 星期日

[C] #ifdef #ifndef #elif #else #endif #if defined

1.#ifdef
a.只有一個條件
#ifdef 識別字
   /*若識別字被定義,編譯器會編譯此部分程式*/
#else
   /*否則編譯此部分程式*/
#endif
#if defined(CONDITION_1)
   /*若識別字被定義,編譯器會編譯此部分程式*/
#elif
   /*否則編譯此部分程式*/
#endif
/*Example*/
#define CONDITION_1
#ifdef CONDITION_1
   /*編譯此部分程式*/
#else
   /*不編譯此部分程式*/
#endif

2020年3月22日 星期日

[BT/BLE] Beacon/Advertising 藍芽廣播介紹

BLE(Bluetooth Low Energy)的廣播模式,也稱Advertising,少許人稱broadcast.

Google稱為Eddystone, Apple稱為Beacon.
雖然名字不同,但他們都是類似的東西,都是按照BLE的Advertising 格式所構成的.

需要文件載點:
Core Specification and Core Specification Supplement
Eddystone Protocol Specification
iBeacon




2020年3月18日 星期三

[C] 指標

&:取址(reference operator), address of ... (eq.&a:address of a)
*:取值(dereference operator),value of ... (eq.*b:value of b)


各種用法解說:
char *ptr;  //char表示point指向變數的類型,唸做:ptr is a pointer to char

char p[5]; // p is a 5-element array of char
char *p[5]; // p is a 5-element array of pointer to char 
char (*p)[5]; // p is a pointer to a 5-element array of char

另一種解釋
int *ptr[10];
This is an array of 10 int* pointers

int (*ptr)[10];
This is a pointer to an array of 10 int


typedef void (*func)(char);
func是個指標,指向某個函式,而這個涵式有一個資料型態為char的引述,回傳值為void


示意圖:



2020年3月16日 星期一

[C] 讀寫存取.txt.bin

fopen
不採用二進制方式打開,fopen(filename, "r"),只要文件中有一字節為1A,就會停止讀取.如果用fopen(filename,"rb")就不會出現此問題.

rb是只讀取二進位文件:
r:read, b:binary

fseek
很重要,有時候讀不到長度會資料是這部分設定錯誤,意思是游標的位置.


2020年3月3日 星期二

[STM32] STM32CUBE教學

ST出了兩套非常方便實用且免費的工具


●STM32Cube_MX 
https://www.st.com/en/development-tools/stm32cubemx.html
可用選單方式建立STM32的周邊硬體程式.
如下圖假設您今天要UART功能,只要在STM32Cube_MX 的圖形介面中點一點按一按就能產生此功能的程式了.
















STM32CubeIDE
https://www.st.com/en/development-tools/stm32cubeide.html
結合STM32Cube_MX和Atollic編譯器所構成的,其是使用GCC compiler,所以效率比Keil C和IAR差,但是免費,可以提供給不想花錢買Keil C或IAR的人使用.

2020年2月18日 星期二

[STM32] EXTI0_IRQHandler

STM32外部中斷(Interrupt)的中斷ISR(Interrupt Service Routine).
[C51/ARM] 中斷(Interrupt)
[C51/ARM] 中斷服務程式(Interrupt Service Routine,ISR)

以stm32l476為例:
EXTI0_IRQHandler()是官方定義的名稱,其命名定義在startup_stm32l476xx.s














[Git] Git Command

●查看本地端(Local)的分支
git branch




●查看遠端(Remote)的分支
git branch -r





2020年2月17日 星期一

[STM32] 新版函式庫(HAL APIs)操作手冊路徑

STM32出了新版的函式庫後,相信大家對新的函式會比較不熟,其官方有出操作手冊.


這裡以STM32Cube_FW_F4_V1.24.1作範例,
查詢HAL_GPIO_ReadPin(...)這個函式,
(路徑請參考下圖)


[STM32] 函式庫介紹

STM32的函式庫有三種

1.Standard Peripheral Libraries
這是舊版的函式庫,不會再更新,要新的函式庫請用下面第二點和第三點的.
此函式庫要從官方下載:STM32 Standard Peripheral Libraries

2.STM32CUBE - HAL APIs

3.STM32CUBE - LL APIs
此為HAL APIs的簡化版,code size比較小,執行效率比較高

(2和3可由STM32CubeIDE或STM32CubeMX下載)


2020年1月9日 星期四

[常識] 自動同步Google日曆與Hotmail行事曆

在Google日曆裡新增的事件自動同步到Hotmail行事曆的步驟如下:

1. 按Google日曆右上角齒輪選設定.

2020年1月6日 星期一

[C#] 加入Microsoft Office套件

加入此套件可利用C#建立word,excel檔案.

1.檔案→加入參考



















2. 組件→Microsoft Office 16.0 Object Library→確定
















[C#] Form排版

當一個視窗(Form)內有過多物件時,
會顯得凌亂且不易整理,
有時還會受到視窗放大縮小影響比例.