CH32V103相關(guān)資料匯總

麻煩提供一下CH32V307EVT開發(fā)板的原理圖,謝謝!


您好,關(guān)于CH32V307 EVT 開發(fā)板的原理圖,在CH32V307EVT 的PUB文件夾下都有的,如下圖。CH32V307 EVT下載鏈接如下:

http://m.findthetime.net/downloads/CH32V307EVT_ZIP.html?

image.png


評估板下載RTC例程,只打印000,

739ff7d5416f5c73f096ca2a82b9caa0_172753qepddzbbx1cn5yg2.png


經(jīng)查,RTC_Init返回值為1,說明初始化時鐘失敗,晶振有問題,是不是板上的32.768晶振有問題,不能起振?


我把它改為內(nèi)部40K時鐘,下載后第一次正常,但重新上電后就不行了,程序卡在

RTC_WaitForSynchro(); //等待最近一次對RTC寄存器的寫操作完成

不知道是什么原因,特此請教!謝謝!


您好,測試板可以換個低速晶振試一下,此外若要使用內(nèi)部LSI,注意程序要進行對應的修改,如下圖

image.png


image.png我是這樣改的


RTC初始化代碼如下 :

u8?RTC_Init(void)
{
????//檢查是不是第一次配置時鐘
????u8?temp=0;
????RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR?|?RCC_APB1Periph_BKP,?ENABLE);//使能PWR和BKP外設時鐘
????PWR_BackupAccessCmd(ENABLE);//使能后備寄存器訪問
????BKP_DeInit();//復位備份區(qū)域
????RCC_LSICmd(ENABLE);
????while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)?==?RESET?&&?temp?<250)
????{
????temp++;
????Delay_Ms(20);
????}
????if(temp?>=?250)
????return?1;
????RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);?//
????RCC_RTCCLKCmd(ENABLE);
????RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成
????RTC_WaitForSynchro();??//等待RTC寄存器同步
????//?RTC?ITConfig(RTC?IT?ALR,?ENABLE);
????RTC_ITConfig(RTC_IT_SEC,?ENABLE);//使能RTC秒中斷
????RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成
????RTC_EnterConfigMode();
????RTC_SetPrescaler(32767);
????RTC_WaitForLastTask();
????if?(BKP_ReadBackupRegister(BKP_DR1)?!=?0x5A51)//從指定的后備寄存器中讀出數(shù)據(jù):讀出了與寫入的指定數(shù)據(jù)不相乎
????????RTC_Set(2020,11,10,13,50,55);//設置時間
????RTC_ExitConfigMode();//退出RTC配置模式
????BKP_WriteBackupRegister(BKP_DR1,?0X5A51);?//向指定的后備寄存器中寫入用戶程序數(shù)據(jù)
????RTC_NVIC_Config();//RCT中斷分組設置
????RTC_Get();//更新時間
????return?0;?//ok

}

在VBAT電源保持的情況下,每次重新上電都是打印初始化設置的時間2020,11,10,13,50,55,即RTC無法正常運行,這是為什么?



您好,可以參考一下下帖2樓回復例程,基本都是一樣的

http://m.findthetime.net/bbs/thread-103442-1.html

?


u8?RTC_Init(void)
{

????u8?temp?=?0;
????RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR?|?RCC_APB1Periph_BKP,?ENABLE);
????PWR_BackupAccessCmd(ENABLE);//使能后備寄存器訪問

????if?(BKP_ReadBackupRegister(BKP_DR1)?!=?0xA1A2)//從指定的后備寄存器中讀出數(shù)據(jù):讀出了與寫入的指定數(shù)據(jù)不相乎
????{
????????printf("RTC?Test:?%d\r\n",88);
????????BKP_DeInit();//復位備份區(qū)域
????????RCC_LSICmd(ENABLE);
????????while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)?==?RESET?&&?temp?<250)
????????{
????????temp++;
????????Delay_Ms(20);
????????}
????????if(temp?>=?250)
????????return?1;

????????RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
????????RCC_RTCCLKCmd(ENABLE);
????????RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成
????????RTC_WaitForSynchro();//等待RTC寄存器同步
????????//??????RTC_ITConfig(RTC_IT_ALR,?ENABLE);
????????RTC_ITConfig(RTC_IT_SEC,?ENABLE);//使能RTC秒中斷
????????RTC_WaitForLastTask();
????????RTC_EnterConfigMode();
????????RTC_SetPrescaler(32767);
????????RTC_WaitForLastTask();
????????RTC_Set(2019,?10,?8,?13,?58,?55);?/*?Setup?Time?*/
????????RTC_ExitConfigMode();//退出RTC配置模式
????????BKP_WriteBackupRegister(BKP_DR1,?0XA1A2);
????????printf("RTC?Test:?%d\r\n",99);
????}
????else
????{
????????printf("RTC?Test:?%d\r\n",77);
????????RTC_WaitForSynchro();?//等待最近一次對RTC寄存器的寫操作完成
????????//卡在這個地方了-----------------------------


????????printf("RTC?Test:?%d\r\n",66);
????????RTC_ITConfig(RTC_IT_SEC,?ENABLE);?//使能RTC秒中斷
????????printf("RTC?Test:?%d\r\n",55);
????????RTC_WaitForLastTask();//等待最近一次對RTC寄存器的寫操作完成
????????printf("RTC?Test:?%d\r\n",44);
????}
????RTC_NVIC_Config();//RCT中斷分組設置
????RTC_Get();//更新時間

????return?0;
}

image.png


同樣只能運行一次,重啟之后就卡在RTC_WaitForSynchro();的循環(huán)中


哦,自己弄好了。在printf("RTC Test: %d\r\n",77);前面加入:

?RCC_LSICmd(ENABLE);
?RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
?RCC_RTCCLKCmd(ENABLE);

完整的項目:

icon_rar.gifRTC測試(使用內(nèi)置40K振蕩器).rar



請問哪里可以下載到CH32V系列的庫函數(shù)開發(fā)手冊?


您好,下帖已回復:

http://m.findthetime.net/bbs/thread-107153-1.html

?


請問 如何在CH32v103上實現(xiàn)互斥鎖 或者 條件變量

軟中斷例程有沒有


您好,目前沒有相關(guān)例程,若你之前有用過相關(guān)功能程序,可以直接套用的?;蛘吣憧梢酝ㄟ^郵箱(lzs@wch.cn)跟我具體說一下你的目的或你想實現(xiàn)的功能,這邊具體看一下.




只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频