原创 137 timerb pwm功能
功能三:PWM 總結而言產生PWM是利用兩個寄存器AB,設置那個計數器到了清除 計數器,這個比較的寄存器就是週期,另外一個就是佔空比。本模式就只能產生一個PWM。還有一個緩衝功能,用戶開啓後可以使得波形平滑的改變到其他頻率或者佔空比
原创 BAT外部接20M晶振
#include "bat32g137.h" #include "clk.h" #define BIT(x) (1<<x) int main(void) { // P30輸出最爲測試IO PORT->PM3 &=~BIT(0);
原创 137 按鍵中斷
#include "bat32g137.h" int main(void) { // 下降沿觸發 /* Set KR0 pin */ PORT->PU7 |= 0x01U; PORT->PM7 |= 0x01
原创 模擬EEPROM程序分析
1.讀部分。 uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data) { uint16_t ValidPage = PAGE0; uint16_t Addre
原创 137 timerm cap
#include "bat32g137.h" #include "userdefine.h" #include "clk.h" #include "tmm.h" /***********************************
原创 137 下載口(64 pin)
5---SWDIO 9---SWCLK 6---RESET 12 13 --GND 14 15 --VDD
原创 137 timerb 相位計數器
功能四:相位計數模式 其實就是捕獲外部信號波形,TBCLK0 TBCLK1,組合起來。定時器B對把外部信號作爲時鐘來計數,根據不同的配置實現計數遞增還是遞減。邊沿可以任意選擇。 硬件上 P05 連接到P01. 實際
原创 關於DMA通道的猜想
有些芯片有DMA0 DMA1。 如果DMA0 的多個通道 同時有信號觸發,響應按照優先級分時執行。 如果是兩個 DMA的通道,主要不產生資源競爭訪問,應該就沒有問題,就可以實現同事處理。 分時複用其實已經滿足要求,DMA只是一個操作IP
原创 137 SPI+DMA
#include "bat32g137.h" #include "sci.h" #include "stdio.h" // bref: spi dma發送 // para: // note: static void spi_send_
原创 137 CMP比較器
137的和135的是一樣的。 #include "bat32g137.h" #include "cmp.h" int main(void) { // postive input CMP_PSIDE_VCIN12--P20 //
原创 137 PGA
#include "bat32g137.h" #include "pga.h" #include "dac.h" #include "adc.h" #include "EventRecorder.h" // K
原创 137 SPI
#include "bat32g137.h" #include "sci.h" #include "stdio.h" // bref: spi發送 // para: // note: static void spi_send(uint
原创 137 timerb-捕獲功能
總結而言,timerb 捕獲模式,是捕獲開始,就把計數值放到緩衝區中,其實緩衝區就是軟件上的FIFO,下一次邊沿捕獲,這個值在寄存器中。這個時候就可以利用本次計數器值減去上次計數值,從而計算出脈寬。或者脈衝週期。 TBCR 寄存器可以
原创 137 flash存儲
#include "bat32g137.h" #include "EventRecorder.h" // Keil.ARM Compiler::Compiler:Event Recorder #include
原创 137 看門狗
#include "bat32g137.h" #include "EventRecorder.h" // Keil.ARM Compiler::Compiler:Event Recorder #include