原创 sprintf函數應用

char s[9]; sprintf(s, "%d", 4567); s="4567"={'4','5','6','7',0,****};後四個數據不定 sprintf(s, "%2d", 4567); s="4567"={'4','5'

原创 Jlink v8程序下載及錯誤:Invalid ROM Table!

keil5環境給STM32VCT6下載程序1.1 JTAG方式連線,五線四線方式均沒問題:VCC/GND/JTMS/JTCK/JTDI/JTDO/JNTRST 或者VCC/GND/JTMS/JTCK/JTDI/JTDO1.2 當用SW模式

原创 PWM例程__MK20DX128VLH5_K20系列

/* cpu:MK20DX128VLH5 */ #include "MK20D5.h" void PWMInit(void); void GPIOInit(void); int main(void) { //時鐘

原创 (Kinetis K60)flash讀寫

#include "MK60D10.h" #include "uart4.h" typedef unsigned char U8; typedef unsigned short int U16; typ

原创 MC9S08DZ時鐘初始化

看文檔MC9S08DZ60,系統時鐘分配圖如下: 上電覆位默認進入時鐘模式爲FEI 如果不進行時鐘配置,假定內部爲32K,BDIV復位默認爲01,那麼MCG主輸出頻率MCGOUT=32K/2*1024≈16M,也就是說

原创 GPIO口中斷例程_MK20DX128VLH5_K20系列

/* cpu:MK20DX128VLH5 */ #include "MK20D5.h" #include "system_MK20D5.h" void LEDConfig(void); void GPIOConfig(voi

原创 STM32F103C8T6低功耗測試(待機模式)

只測試了待機模式,待機模式實現系統的最低功耗。 原理圖如下,一開始全部焊接了,其中S2用來進入待機,S1用來喚醒 測試程序爲: #include "stm32f10x.h" #include "system_stm32f10

原创 CRC校驗代碼整理

CRC 既可以從高位算起,也可以從低位算起,算法略有不同。 1、CRC8,來源:其他人的程序 static byte CRC8(byte *u8_data,byte u8_len) { byte i, j; by

原创 Keil硬件仿真調試時,看一段程序運行的時間

爲了保證在MDK中讀取正確的程序運行時間,必須對仿真器的跟蹤項進行設置。   以J-Link爲例。   在工程的“Options for Target…”目標選項界面中,選擇標籤“Debug”,進行調試設置界面,選擇使用“

原创 STM32 定時器有時一開啓就進中斷的問題

    在STM32F103中發現了這個問題,沒細究,在STM32F030中也出現了一開中斷就進一次中斷的情況,仿真調試發現,在初始化定時器函數中TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure

原创 #define 用法集錦

#define 用法集錦 Definition: The #define Directive You can use the #define dir

原创 sizeof()用法彙總

sizeof()功能:計算數據空間的字節數 1.與strlen()比較       strlen()計算字符數組的字符數,以"\0"爲結束判斷,不計算爲'\0'的數組元素。       而sizeof計算數據(包括數組、變量、類型、結構

原创 keil調試:局部變量地址和全局變量地址重疊

最近keil中調試STM32程序時,出現的問題是局部變量沖掉了全局變量的數據。 查資料,原因是棧太小,或者說是自己定義的局部變量太大。局部變量存放在棧中,棧在RAM區,由系統自動管理,查看map文件可以看到棧區空間位於在系統計算

原创 PIT設置_中斷優先級設置__MK20DX128VLH5_K20系列

/* cpu:MK20DX128VLH5 */ #include "MK20D5.h" /* 中斷優先級分組宏 */ #define NVIC_PriorityGroup_0 ((uint32_t)0x7)

原创 一次單片機最小系統的調試

單片機最小系統需要焊接的元器件:單片機STM32F103C8T6+復位電路的電阻和電容。 電源是外部接入3.3V,所以此部分也不需要了,晶振採用內部的,此部分電路也不需要。調試第一片很順利,第二片是另一個PCB版本的,JTAG找不到芯片了