STM8S105系列单片机管脚复用配置(选项字节的配置)
以STM8S105K4T6C為例,實(shí)現(xiàn)PB0管腳復(fù)用成TIM1_CH1N
(1)STM8S復(fù)用功能(芯片引腳加"[ ]"的功能):通過配置flash中的選項(xiàng)字節(jié)來實(shí)現(xiàn)
? ? ? ? ?除了ROP(讀出保護(hù))字節(jié),每個(gè)選項(xiàng)字節(jié)必須被保存兩次,一個(gè)通常的格式(OPTx)和一個(gè)用來備份的互補(bǔ)格式(NOPTx)
? ? ? ? 參見STM8S105xx數(shù)據(jù)手冊(如下圖),可知備選功能重映射選項(xiàng)5(AFR5)負(fù)責(zé)管理PB0端口的重映射功能,將其設(shè)置為1即實(shí)現(xiàn)PB0重映射為TIM1_CH1N?
? ? ? ??
? ? ? ? ?
? ? ? ? ?相關(guān)代碼:
? ? ? ? ? void Flash_Init()
? ? ? ? {
? ? ? ? ? ? ? ? ?FLASH_DeInit(); ? ? ? ? ? ? ? ? ? ? ? //恢復(fù)FLASH相關(guān)寄存器到默認(rèn)值
? ? ? ? ? ? ? ? ?FLASH_Unlock(FLASH_MEMTYPE_DATA); ? ? //解鎖數(shù)據(jù)EEPROM
? ? ? ? ? ? ? ? ?FLASH_ProgramOptionByte(0x4803, 0x20); //選項(xiàng)字節(jié) ?打開PB0的復(fù)用功能
? ? ? ? ? ? ? ? ?FLASH_ProgramOptionByte(0x4804, 0xDF);
? ? ? ? ?}
(2)TIM1_CH1N是TIM1_CH1的互補(bǔ)輸出比較
? ? ? ? ? TIM1_CH1N是TIM1_CH1的反相,可用于TIM1的同步PWM模式
? ? ? ? ? 當(dāng)只選擇TIM1_CH1N輸出PWM時(shí),需要Disable輸出比較,Enable互補(bǔ)輸出比較
? ? ? ? ? 相關(guān)代碼:
? ? ? ? ??void Time1_Init()
? ? ? ? {
? ? ? ? ? ? ? ? ? ?CLK->CKDIVR=0x00;
? ? ? ? ? ? ? ? ? ?TIM1_TimeBaseInit(1599,TIM1_COUNTERMODE_UP,5000,0); //分頻1600,向上計(jì)數(shù),TIM1_ARR=20000,重復(fù)計(jì)數(shù)器為0
? ? ? ? ? ? ? ? ? /*OC1初始化:PWM1模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?輸出不使能
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?互補(bǔ)輸出使能
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CCR1=8000,占空比為50%
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?輸出有效極性為高(無作用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?互補(bǔ)輸出有效極性為高?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?空閑時(shí)輸出高(無作用)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?空閑時(shí)互補(bǔ)輸出高?
? ? ? ? ? ? ? ? ? ? ? */
? ? ? ? ? ? ? ? ? ? ?TIM1_OC1Init(TIM1_OCMODE_PWM1,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??TIM1_OUTPUTSTATE_DISABLE,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM1_OUTPUTNSTATE_ENABLE,?
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?5000,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM1_OCPOLARITY_HIGH,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM1_OCNPOLARITY_HIGH,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM1_OCIDLESTATE_SET,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TIM1_OCNIDLESTATE_SET);
? ? ?
? ? ? ? ? ? ? ? ? ? ? TIM1_OC1PreloadConfig(ENABLE);
? ? ? ? ? ? ? ? ? ? ? TIM1_CtrlPWMOutputs(ENABLE); //PWM輸出使能
? ? ? ? ? ? ? ? ? ? ? TIM1_Cmd(ENABLE); //定時(shí)器開始計(jì)數(shù)?
? ? ? ? ? ? ?}
選項(xiàng)字節(jié)的配置一般有兩種方式:
(1)使用STlink修改選項(xiàng)字節(jié)
? ? ? ? ? 打開STVP進(jìn)行相關(guān)設(shè)置,可參見
? ? ? ? ? https://wenku.baidu.com/view/205181b2d0d233d4b14e69fa.html
? ? ? ? ??點(diǎn)擊打開鏈接
(2)通過程序修改選項(xiàng)字節(jié)
? ? ? ? ? 實(shí)現(xiàn)程序擦Option Bytes時(shí),不能運(yùn)行程序,否則會(huì)出現(xiàn)錯(cuò)誤
? ? ? ? ? 一般不建議通過程序修改選項(xiàng)字節(jié),容易出錯(cuò)
總結(jié)
以上是生活随笔為你收集整理的STM8S105系列单片机管脚复用配置(选项字节的配置)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STVD下配置Cosmic编译器
- 下一篇: STM8L编程环境官方库+STVD+CO