<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH579M" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
說明
CH579M就是個ARM M0 內核的單片機,其實建立工程沒有啥.
只要是STM32玩的好,這節就相當於復習下.
如果STM32玩的不好,這節你也許不知道我說的是啥!
因為這節我十分的直接了當,這節我只是說明建立工程遇到的問題!
開始
1.建一個文件夾
2.文件夾里面再建幾個文件
3.把例程src文件夾里面的所有文件拷貝到library
4.新建工程
4.弄三個分組
5.把 library\StdPeriphDriver 里面的所有.c文件添加進去
5.添加啟動文件
6.設置下頭文件路徑
7.新建一個main.c文件
8.把main.c文件添加到user里面
9.編寫以下程序,並編譯
#include "CH57x_common.h" int main() { }
9.這是因為缺少操作u盤的庫文件
U盤,藍牙,藍牙組網的庫文件是單獨的
10.如果不使用單片機驅動U盤,可以把下面兩個文件移除,再次編譯就不會有錯誤了
10.如果使用單片機驅動U盤,把U盤庫文件添加到工程即可
建一個文件夾用來存放U盤庫文件
拷貝庫文件
建一個分組,然后把文件添加進去
設置下頭文件路徑
編譯的時候說缺少這兩個數組的定義
可以參考源例程里面的定義一下
10.使用串口1打印下,看看單片機是否真的可以工作
#include "CH57x_common.h" __align(4) UINT8 RxBuffer[ MAX_PACKET_SIZE ]; // IN, must even address __align(4) UINT8 TxBuffer[ MAX_PACKET_SIZE ]; // OUT, must even address int main() { GPIOA_SetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-ÅäÖÃÉÏÀÊäÈë GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-ÅäÖÃÍÆÍìÊä³ö£¬×¢ÒâÏÈÈÃIO¿ÚÊä³ö¸ßµçƽ UART1_DefInit(); UART1_SendString("11223344", 8 ); while(1) { } }
其它
例程提供的庫函數要比STM32提供的庫函數還完善,就是為了用戶使用去的.
例程里面已經有個延時函數,也映射了printf函數
假設想使用串口1作為printf打印,可以
注意哈,例程提供的printf是阻塞式的,一般我不用這種,希望大家伙打印日志的時候自己加上環形隊列+中斷發送.