㈠ 請問stm32f103c8t6執行一次乘法(浮點)和一次加法(浮點)的時間各是多少
單條指令執行時間:STM32F10X單片機在主頻為72MHz下,C語言程序執行一條指令需要的時間可認為10ns~100ns。
㈡ 求基於stm32f103c8t6的can通信程序
ain() { unsigned int a; RCC_Configuration(); /*初始化 GPIOC時鍾*/ // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); USART_Configuration(); Delay(10); CAN_configure(); // LedInit(); while(1) { //CAN_ClearFlag(CAN_FLAG_BOF); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_ResetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_SetBits(GPIOB,GPIO_Pin_7); Delay(10); GPIO_ResetBits(GPIOB,GPIO_Pin_7); Delay(10); can_send(0x57); a=can_rev(); USART1_Putc(a); } } -------------------------------------------------------------------------------------------------- #include"stm32f10x_lib.h" void CAN_configure(void) { u8 wrong; CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; GPIO_InitTypeDef GPIO_InitStructure; // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE); // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); /* Configure CAN pin: RX */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure CAN pin: TX */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*can register int*/ CAN_DeInit(); CAN_StructInit(&CAN_InitStructure); /*can cell init*/ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=5; wrong=CAN_Init(&CAN_InitStructure); while(wrong==CANINITFAILED){} /* CAN filter init */ CAN_FilterInitStructure.CAN_FilterNumber=0; CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;//((u32)0x0020<<21)>>16;//標識符 CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;//(((u32)0x0020<<21)|CAN_ID_STD|CAN_RTR_DATA);// CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); // CAN_ITConfig(CAN_IT_FMP0, ENABLE); } void can_send(unsigned char data) { CanTxMsg TxMessage; u8 TransmitMailbox = 0; TxMessage.StdId=0x0020;//標識符 TxMessage.RTR=CAN_RTR_DATA; TxMessage.IDE=CAN_ID_STD; TxMessage.DLC=2; TxMessage.Data[0]=data; TxMessage.Data[1]=0xFE; TransmitMailbox=CAN_Transmit(&TxMessage); while(CAN_TransmitStatus(TransmitMailbox) != CANTXOK){}//等待發送 } unsigned char can_rev(void) { CanRxMsg RxMessage; RxMessage.StdId=0x11;//不需要設置 RxMessage.IDE=CAN_ID_STD; RxMessage.DLC=2; RxMessage.Data[0]=0x00; RxMessage.Data[1]=0x00; while (CAN_MessagePending(CAN_FIFO0)==0);//等到接收 CAN_Receive(CAN_FIFO0, &RxMessage); CAN_FIFORelease(CAN_FIFO0); return RxMessage.Data[0]; } ------------------------------------------------------------------------------------------------- void RCC_Configuration(void) { //*** ErrorStatus HSEStartUpStatus; //*** //* system clocks configuration -----------------系統時鍾配置-------------------/// //* RCC system reset(for debug purpose) // RCC_DeInit(); //將外設RCC寄存器重設為預設值 //* Enable HSE * RCC_HSEConfig(RCC_HSE_ON); //開啟外部高速晶振(HSE) //* Wait till HSE is ready / HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待HSE起振 if(HSEStartUpStatus == SUCCESS) //若成功起振,(下面為系統匯流排時鍾設置) { //* Enable Prefetch Buffer / FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能FLASH預取指緩存 //* Flash 2 wait state / FLASH_SetLatency(FLASH_Latency_2); //設置FLASH存儲器延時時鍾周期數(根據不同的系統時鍾選取不同的值) //* HCLK = SYSCLK / RCC_HCLKConfig(RCC_SYSCLK_Div1); //設置AHB時鍾=72 MHz //* PCLK2 = HCLK/2 / RCC_PCLK2Config(RCC_HCLK_Div2); //設置APB1時鍾=36 MHz(APB1時鍾最大值) //* PCLK1 = HCLK/2 / RCC_PCLK1Config(RCC_HCLK_Div2); //設置APB2時鍾=72 MHz //* Configure ADCCLK such as ADCCLK = PCLK2/2 / // RCC_ADCCLKConfig(RCC_PCLK2_Div2); //RCC_PCLK2_Div2,4,6,8 //* PLLCLK = 8MHz * 9 = 72 MHz / RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //PLL必須在其激活前完成配置(設置PLL時鍾源及倍頻系數) //* Enable PLL / RCC_PLLCmd(ENABLE); //* Wait till PLL is ready / while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } //* Select PLL as system clock source / RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //* Wait till PLL is used as system clock source / while(RCC_GetSYSCLKSource() != 0x08) { } } //***** RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); //***/ }
㈢ stm32f103c8t6單片機控制四項步進電機要一個c程序
對步進電機控制精度要求高不高?也就是一步走多少度? 如果不高!用uln2003或者L298N都可以!如果高的話,可以用專用驅動器,這種驅動器控制簡單!兩個介面一個輸入頻率信號控制轉速,一個輸入電平,來控制轉動方向!控制起來很簡單!顆根據功率來選,便宜的功率不大的比如像3D列印機上的步進電機驅動十幾到幾十都可以!功率大一點的,價格貴一點!
㈣ STM32F103ZET6和STM32F103C8T6編程不一樣嗎
不太一樣,如STM32F103ZET6晶元使用的工程模板寫入STM32F103C8T6,編譯會出現錯誤。
1、修改C/C++選項卡的宏定義
2、啟動文件也需要改一下,用MD的(把C/C++選項卡中 STM32F10X_HD,USE_STDPERIPH_DRIVER 修改為 STM32F10X_MD,USE_STDPERIPH_DRIVER)
㈤ 描述STM32F103C8T6每一位代表的含義
編輯 鎖定.
STM32F103C8T6是一款基於ARM Cortex-M 內核 STM32 系列的32位的 微控制器 , 程序存儲器 容量是64KB,需要電壓2V~3.6V,工作溫度為-40°C ~ 85°C。.
中文名. STM32F103C8T6. 外文名. STM32F103C8T6. 類 別. 集成電路 (IC)
㈥ stm32f103c8t6用keil編程出現錯誤
你看一下stm32f10x_conf.h 中的#include "stm32f10x_exti.h" 有沒有包含
㈦ 編程時,選擇晶元類型stm32f103c6和stm32f103c8有什麼區別
區別:
1、設置不同。
keil4軟體中,設置Preprocessor Symnols下的Define:
stm32f103c8用:STM32F10X_HD,USE_STDPERIPH_DRIVER驅動,
stm32f103c8用:STM32F10X_HD,USE_STDPERIPH_DRIVER驅動。
2、快閃記憶體存儲器不同。
stm32f103c6是32kFlash,而stm32f103c8是64kFlash。雖然現在的單片機可以通過外加Flash晶元擴容,但對於運行還是有一定的消耗,所以大一點的Flash,是選擇晶元的一個性能標准。
3、啟動文件的不同。
stm32f103c8啟動文件用startup_stm32f10x_md.s,stm32f103c6啟動文件用startup_stm32f10x_ld.s。啟動文件一共有三種,小等於32k的用ld.s結尾的驅動文件,大於k小等於64k的用md.s結尾的驅動文件。
㈧ 用USB轉TTL線怎麼把程序燒寫到stm32f103C8T6中
用USB轉TTL線把程序燒寫到stm32f103C8T6中:
1、TXD-接 PA10/USART1_RX
2、RXD-接 PA9/USART1_TX
3、3V3 GND 接供電,將BOOT0接3V3後再供電,即可進入下載模式。
寫入程序成功後,將BOO0與BOOT1均置為0。
(8)stm32f103c8t6編程擴展閱讀:
程序燒寫的分類以及注意事項:
MCU類可燒錄IC
MCU類可燒錄IC,目前市場上有很多單晶元控制器(SINGLE MCU)可以通過配套的燒錄器進行一次或多次資料燒寫。通常僅能燒錄一次的MCU被叫做OTPMCU(英文即:ONE TIME PROGRAMBLE MCU),與之相對的是MTP MCU(英文是MULTI TIME PROGRAMBLE MCU)就是可多次燒錄的MCU。
OTP MCU通常由生產者在產品裝配前通過配套的燒錄器一次性把資料燒入,該類IC一經燒錄,燒入的資料將無法再次改變
MTP MCU,有別於OTP MCU,本類IC 通過配套的燒錄器可以多次燒錄,擦寫,有的內建FLASHMCU甚至可以燒錄不小於10萬次。
存儲類可燒錄IC
存儲類可燒錄IC:門類眾多,如EPROM、EEPROM、NOR FLASH、SPROM、NAND FLASH等等。
EPROM、NOR FLASH、EEPROM、SPROM主要用於存放我們的數據資料或程式,我們已經司空見慣了,跟生產NAND FLASH的廠家比起來可以說生產廠家幾乎遍地都是,市面上有相當多的萬用燒寫器可以把資料燒寫進這些IC。
NAND FLASH只有三星等幾個生產廠家生產,目前廣泛用於U盤、MP3、MP4、ELA和電子詞典上。
㈨ stm32f103c8t6 怎麼燒寫程序 方法與步驟
1、 首先安裝ST官方串口下載軟體,
Flash_Loader_Demonstrator_v2.2.0_Setup.exe
2、 用交叉串口線連接開發板和電腦,
BOOT0選擇為1,BOOT1選擇為0,
接上開發板電源,SW1切換到ON打開電源開關。
3、 從開始程序菜單打開Flash Loader Demo程序,所有程序->STMicroelectronics->Flash
Loader Demonstrator->Flash Loader Demo
㈩ 求問stm32f103zet6 stm32f103c8t6編程方面有區別嗎
兩者的程序應該可以通用吧,只是頭文件不同而已
識別:
Example: STM32 F 103 C 8 T 7 xxx
Device family
STM32 = ARM-based 32-bit microcontroller
Proct type
F = general-purpose
Device subfamily
103 = performance line
Pin count
T = 36 pins
C = 48 pins
R = 64 pins
V = 100 pins
Flash memory size(1)
1. Although STM32F103x6 devices are not described in this datasheet, orderable part numbers that do not
show the A internal code after temperature range code 6 or 7 should be referred to this datasheet for the
electrical characteristics. The low-density datasheet only covers STM32F103x6 devices that feature the
A code.
8 = 64 Kbytes of Flash memory
B = 128 Kbytes of Flash memory
Package
H = BGA
T = LQFP
U = VFQFPN
Temperature range
6 = Instrial temperature range, –40 to 85 °C.
7 = Instrial temperature range, –40 to 105 °C.
Options
xxx = programmed parts
TR = tape and real