2022年6月22日 星期三

[C語言]字串處理函式:strspn, strpbrk



size_t strspn(const char *str1, const char *str2)  傳回str1包含了str2 字串中的字元,共有有多少個。
char *strpbrk(const char *str1, const char *str2)  傳回str1中出現str2字串中字元的位置。若沒有找到傳回NULL. 

char *d =strpbrk("my phone number is 23167736", "0123456789")
print("%c",d); ==> 卬出2

========================

 以處理HTTP header 的字串為例,  我們要逐行取出HTTP header的內容,  但要如何逐行進行呢? 
以下是使用 strspn(), strpbrk() 函式來完成的
 




參考: 
[1]程式參考


[2]   https://github.com/troglobit/merecat/blob/master/src/libhttpd.c




2022年5月30日 星期一

Disables dynamic cpufreq

 



Boot loader程式放入 Pi3中, 一開機剛開始跑的時候,LED 閃爍頻率都很正常 , 但大約經過約10秒左右 , 時間會變快 . 例如LED 0.5sec閃爍一次 , 經過10sec後變快小於0.5sec閃爍,是哪裡的設定需要再做調整修改 ?



#Disables dynamic cpufreq driver

add this line "force_turbo=1" to config.txt  . 

you can also google DVFS to get more information


2022年5月24日 星期二

[ C 語言] gcc 定義巨集

 

[ C 語言]

1.) 在程式檔中 (,c 或.h) 定義 DEBUG  

  #define DEBUG  

 



2.) 不改變在程式檔, 而是在程式編譯階段去定義 DEBUG    

gcc -DDEBUG  debug.c -o test 

另外也可以設定 DEBUG的值, 如 gcc -DDEBUG=4 debug.c -o test

(以上等同在hello.c 內加入了 #define DEBUG 或   #define DEBUG  4 這一行 )

其實, 若 寫 -DDEBUG  隱含  -DDEBUG=1 的意思 


注意: 若程式內及gcc 都同時定義了 DEBUG 這個符號 
,  會以程式碼內寫的為主。(會出現重覆定義的warning 訊息)

pi@ittraining:~/LinuxPro/trunk/source/ch3 $ gcc debug.c -DDEBUG=1 -o test

debug.c:4: warning: "DEBUG" redefined

 #define DEBUG 3

<command-line>: note: this is the location of the previous definition






2022年4月30日 星期六

[C 語言] 有無const 的差異?

 


char *s : 表示s 指標指向一個character
constant char *s : 表示s 指標指向一個constant character; 也就是所指向的字元不能被修改
可以參考底下範例, 觀察有無const 的差別.

#include <stdio.h>
int main()
{
const char str[]="hello";
str[0]='H';
printf(str);
return 0;

}

若是寫 const char *str="hello";
這str 本來就指向read only 的"hello"字串區域, 所以本來就不能更改, 因此
這兩個寫法結果沒有差異, 但用const char * str寫法可以讓別人知道, 不會透過str 來改變指標所指的內容.

char *str="hello"; 
const char *str="hello";


2022年3月29日 星期二

什麼是機器學習? (學習簡介)



訓練出好的AI模型的下一步是什麼 ? 就是AI佈署(Deployment ) , 你可以將AI模型佈署在雲端 或者佈署在邊緣的嵌入式的裝置上, 而嵌入式的裝置可以是指特定的微控制器上或是Android/iOS 手機上。











 

2022年3月15日 星期二

[MCU單晶片 Q&A] ADC工作頻率

 

Question:
要怎麼知道Fosc 是16MHz呢? Fosc 是MCU的固定property 還是是個可以設置的參數呢?

Answer: 
這是外部提供 16MHz 的 Crystal oscillator
p.s. 可參考上課文件的的電路圖  (WengPICV2_sch.pdf )


2022年3月13日 星期日

[MCU單晶片 Q&A] 中斷

 

Question:

PPSunlock() 和PPSlock() 功能為何呢? 為什麼要用這兩個PPSunlock和PPSlock去包住RPI function? 使用PPSlock()和PPSunlock() 為什麼要把GIEH 中斷關掉呢? 因為沒看到文件上有這樣說明, 但是PPS 裡的function 有關掉中斷後面再回復的動作




Answer: 

   這是PPS 使用的規定, 如此才可以 remap Pin 腳功能, 
   可以參考PIC18F46J50 文件描述, 關於PPS 主題 10.7.4.1 Control Register Lock