記事ディレクトリ
7. 最初のプロジェクトをコンパイルしてダウンロードします
E:\STC32\STC32G-DEMO-CODE-V9.6-20230425\01.1-Use P6 port as marquee-entry version を例として、C 言語バージョンのルーチンを選択します: プロジェクト ファイルを開きます:sample.uvproj
ビルド
:
Keil にモデルとヘッダー ファイルを追加する
Keil を使用する前に、STC シミュレーション ドライバーをインストールする必要があります。STC エミュレーション ドライバーのインストール手順は次のとおりです。
まず STC ISP を開いてソフトウェアをダウンロードし、次に「Keil エミュレーション設定」ページの「モデルとヘッダー ファイルを Keil に追加して STC エミュレーター ドライバーを Keil に追加」をクリックします。ソフトウェアの右側の機能エリアにあるボタン:
Keil ソフトウェアのインストール ディレクトリを見つけて確認します。
ヘッダー ファイルはデフォルトで Keil インストール ディレクトリ下の "C251\INC\STC" ディレクトリにコピーされますが、
C コードでは ***#include "STC32GH" //#include *** が正しく使用できます。
プログラムのダウンロード(手動方法1)
一部のシステムでは、STC-ISP メニューにある USB ドライバーのインストールが必要です。
USB ケーブルを介してボードをコンピュータに接続し、ソフトウェア (プログラム定義) でクロックを 24Mhz として選択します。
#define MAIN_Fosc 24000000L //定义主时钟24MHZ,软件按此设置
P3.2 ボタンを押し、この時点で OFF ボタンを押して放し、その後 P3.2 を放して USB ダウンロード モードに入ります (参照: Tulong Dao-burning-non-power-off download-simulation interactions.pdf ) :
bare コードをダウンロードするとき、ボードは完全に手動の方法を使用してダウンロードする必要があります。後でコード サポートを使用すると、他の方法を選択できます。
情報表示ペインに「間違ったマイクロコントローラーモデル」と表示された場合は、正しいマイクロコントローラーを選択し直す必要があります。
最も単純なダウンロード回路と手順は次のとおりです。
自動ダウンロード設定(リセットとUSBコマンドによるダウンロード)
2.1 ライブラリファイルの追加
プロジェクト バーのプログラム グループを右クリックし、[既存のファイルをグループ 'ソース グループ 1' に追加…] を選択します。
ポップアップ ボックスでライブラリ ファイル (stc_usb_hid_32g.LIB) を選択し、プロジェクトに追加します。
2.2 ソフトウェアサポートコードの追加
USB デバッグとリセットに必要な定義を追加します。
//USB调试及复位所需定义
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
USB 初期化およびクロック ソース起動プログラムを初期化プログラムに追加します。
#include "stc.h" //调用头文件
#include "usb.h"
//USB调试及复位所需代码-----
sys_init();
usb_init(); //初始化USB代码
EA = 1;
void sys_init() //函数定义
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01)); //等待时钟稳定
}
注: プログラムが IE2 レジスタで USB 以外の割り込みのビット操作を有効にする場合、IE2 関連の割り込みビット操作を有効にした後、EUSB をリセットする必要があります。これまでのところ、サポートするソフトウェア コードが追加されています
。
2.3 コマンドを送信して MCU リセットをトリガーし、自動的にダウンロードする
STC-ISP ソフトウェア (V6.89E 以降) を開き、チップ モデルを選択し、書き込む必要があるプログラム ファイルを開き、ハードウェア オプションを設定した後、「ユーザー コマンド受信後に ISP 監視プログラム領域にリセット」に切り替えます。 " label:
以下に示すように、「USB (HID) モード」を選択し、デフォルトの VID: 34BF、PID: FF01 を設定します。
カスタム コマンドを設定します: @STCISP#
「Hex」オプションをキャンセルすると、コマンドは同じになるはずですプログラム内の定義としては次のようになります。
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
[ユーザー定義コマンドを送信してダウンロードを開始] ボタンをクリックするか、[ダウンロードごとにカスタム コマンドを送信する] オプションがチェックされている場合は、[ダウンロード/プログラミング] ボタンをクリックしてダウンロードを開始します。
(この手順では、最初の 2 つの手順を完了し、コンパイルされたプログラムを使用する前に手動パワーオン リセットを通じてチップにダウンロードする必要があります)
P3.2ポートボタンによるダウンロードモードのトリガー
3.1 ソフトウェアをサポートするコードを追加します。
キートリガー機能に必要な定義を追加します。
//P3.2口按键复位所需变量
bit Key_Flag;
u16 Key_cnt;
P3.2 ポート ボタンを 1 秒間押し続ける機能を追加して、ソフトウェア リセットをトリガーし、USB ダウンロード モードに入ります。
//========================================================================
// 函数: void KeyResetScan(void)
// 描述: P3.2口按键长按1秒触发软件复位,进入USB下载模式。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2022-6-11
// 备注:
//========================================================================
void KeyResetScan(void)
{
if(!P32)
{
if(!Key_Flag)
{
Key_cnt++;
if(Key_cnt >= 1000) //连续1000ms有效按键检测
{
Key_Flag = 1; //设置按键状态,防止重复触发
USBCON = 0x00; //清除USB设置
USBCLK = 0x00;
IRC48MCR = 0x00;
delay_ms(10);
IAP_CONTR = 0x60; //触发软件复位,从ISP开始执行
while (1);
}
}
}
else
{
Key_cnt = 0;
Key_Flag = 0;
}
}
1ms で定期的に実行される割り込みまたはメインループでキースキャン関数を呼び出します。
while (1)
{
KeyResetScan();
delay_ms(1);
}
または:
void timer0_int(void) interrupt 1 //1ms 中断函数
{
KeyResetScan(); //P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
}
3.2 書き込みモードのトリガーとダウンロード
上記の手順を完了し、手動パワーオン リセットを通じてコンパイルされたプログラムをチップにダウンロードした後、P3.2 ポート ボタンを長押しすることにより、USB ダウンロード モードに入るように自動的にトリガーできます (ユーザー受信後に ISP にリセットに切り替えます)。コマンド").監視プログラム領域"ラベル):
USB-CDC/シリアルポートモードを選択し、「ユーザー定義コマンドを送信してダウンロードを開始」または「ダウンロード/プログラミング」をクリックしてプログラムをダウンロードします。
「ユーザー コマンド受信後に ISP 監視プログラム領域にリセット」ラベルを設定し、「シリアル ポート モード」に切り替えるか、「各ダウンロード前にカスタム コマンドを送信する」オプションをキャンセルして、「ダウンロード/プログラミング」をクリックする必要があることに注意してください。ボタンをクリックしてダウンロードを開始します。