本站建議搭配 Hover Zoom+ chrome 擴充套件,可自動放大圖片
( 站內文介紹: https://goo.gl/BnBSGa )
網站搜索不是很好用建議使用google底下括號內是範例,整串打進google搜索內;
[ site:https://charlottehong.blogspot.tw/ 你要搜索的內容 ]
2017年8月21日 星期一
2017年8月16日 星期三
CPP 如何引入 C 檔使用
C++ 如何引入 C 檔使用
指令 extern “C” { }
這個指的意思其實就是用C的方式來編譯函式或變數,假如說有一個
void fun(int, int);
C++編譯之後會得到一串名稱為
但是 C 編譯之後只會得到名稱為
_fun_int,_int
但是 C 編譯之後只會得到名稱為
_fun
這裡也就就指出了為什麼 C++ 可以多載的原因了。
C++ 引入 C 檔案
如果一份C寫了之後打算給C++使用,就在他的檔頭前後加上這六段即可
// cFile.h
#ifdef __cplusplus
extern "C" {
#endif
/* 代碼 */
#ifdef __cplusplus
}
#endif
其實C++ 很大程度的兼容,也可以連考慮都不考慮直接加上就好
C 引入 C++ 檔案
與上面相同
參考
2017年8月10日 星期四
stm32f469i GUI 如何放入自訂圖片 如何轉換圖檔給stm讀取
stm32f469i GUI 如何放入自訂圖片 如何轉換圖檔給stm讀取
打開這一份範例:
STM32Cube_FW_F4_V1.16.0\Projects\STM32469I-Discovery\Examples\LCD_DSI\LCD_DSI_CmdMode_DoubleBuffering
預設有兩張圖片,這兩張個別是
- image_320x240_argb8888
- life_augmented_argb8888
放置的位置在
LCD_DSI_CmdMode_DoubleBuffering\Inc
他是一份 .h 檔案定義了這張圖片,裡面長這個樣子
const uint32_t life_augmented_argb8888[76800] =
{
0xFFFFFFFF,
0xFFFFFFFF,
...
};
這裡就是圖片的像素質了,兩個兩個一組看,第一組FF是透明度,越大越不透明,再來個別是 R, G, B 依序比如說一個顏色的 RGB 是 50, 100, 150 對應到的格式就是 0xFF326496。
我寫了一個轉換程序,可以把 BMP 圖檔轉換到 .h 檔,需要的可以參考。
Bmp_to_ARGB888
Bmp_to_ARGB888
使用方式直接拉BMP圖檔到解壓縮出來的 exe 上然後放開即可(可以一次拉好幾個進去)。
圖檔只能放exe旁邊(寫的時候沒注意到的小Bug)
或者使用CMD指令(一樣要放一起)
Bmp_to_ARGB888.exe p1.bmp p2.bmp
2017年8月8日 星期二
stm32f4 使用計時器計時 1ms
stm32f4 使用計時器計時 1ms
可以使用官方範例程式內的 Examples\TIM\TIM_TimeBase 修改
預設是 delay 1s 修改一下參數 Period 除以 1000 即是 1ms
預設是 delay 1s 修改一下參數 Period 除以 1000 即是 1ms
初始化計時器
void timers_init()
{
uint32_t time_c = 10000;
uwPrescalerValue = (uint32_t)((SystemCoreClock / 2) / 10000) - 1;
TimHandle.Instance = TIMx;
TimHandle.Init.Period = 10000/1000 - 1 ;
TimHandle.Init.Prescaler = uwPrescalerValue;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
TimHandle.Init.RepetitionCounter = 0;
if(HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
Error_Handler();
}
if(HAL_TIM_Base_Start_IT(&TimHandle) != HAL_OK)
{
Error_Handler();
}
}
這裡這樣設置就可以了,再來它會自動每 1ms 呼叫 HAL_TIM_PeriodElapsedCallback() 這個函式,這個函式這樣寫
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static int timer1 = 0;
static int timer2 = 0;
++timer1;
++timer2;
if(timer1 == 1000) {
BSP_LED_Toggle(LED1);
timer1 = 0;
}
if(timer2 == 500) {
BSP_LED_Toggle(LED2);
timer2 = 0;
}
}
即可用不同頻率閃爍LED了,我不確定中斷程序會不會等這個函式執行完畢;建議用一個全域變數當flag,讓計時器激活他,然後由主函式內的 while 統一控管來處理,不然可能會卡住導致延遲。
2017年8月6日 星期日
2017年7月31日 星期一
Markdown HackMD Github 同一頁文內跳轉
Markdown HackMD Github 同一頁文內跳轉
使用超連結跳轉即可
HackMD
在 HackMD 內大標題中標題小標題都會自己有一個標籤
比如說一個大標籤
比如說一個大標籤
# 第一章
## 第一節
相對應的跳轉方式就是
- [第一章](#第一章)
- [第一節](#第一節)
Github
這個就沒有Markdown自己擴展的連結,只能自己用html補
<h2 id="First">第一章</h2>
相對應的跳轉方式就是
- [第一章](#First)
訂閱:
文章 (Atom)